我知道这个问题在许多方面存在,但我无法找到与我的具体效率问题相关的答案.
我有下面的代码,工作得很好.
我有一个10项数组,我从中随机选择一个项目(按下输入键).代码保留了最近5个选项的数组,这些选择不能随机选择(以避免随着时间的推移重复过多).
如果chooseName()函数最初选择在最近的5中使用的名称,它只会断开并再次调用自身,重复直到找到"唯一"名称.
我有两个问题:
说这是一个"递归函数"是否正确?
我担心理论上这可能会在找到一个唯一名称之前保持循环很长时间 - 是否有更有效的方法来执行此操作?
感谢您的任何帮助.
var a = ["Roger", "Russell", "Clyde", "Egbert", "Clare", "Bobbie", "Simon", "Elizabeth", "Ted", "Caroline"];
var b = [];
var chooseName = function () {
var unique = true;
b.length = 5;
num = Math.floor(Math.random() * a.length);
name = a[num];
for (i = 0; i < a.length; i++) {
if (b[i] == name) {
chooseName();
unique = false;
break;
}
}
if (unique == true) {
alert(name);
b.unshift(name);
}
}
window.addEventListener("keypress", function …Run Code Online (Sandbox Code Playgroud) 我有一个函数调用showText()它将一些文本从表单文本框复制到其他地方的段落.它被调用如下:
document.getElementById("mybutton").onclick = showText;
Run Code Online (Sandbox Code Playgroud)
如果我将()添加到showText的末尾,它将无法工作,我从阅读中了解到类似的答案,这是调用函数的唯一方法.
稍后在脚本中它需要()工作:
window.addEventListener("keypress", function(e) {
var keycode = e.keyCode;
if (keycode == 13) {
showText();
}
}, false);
Run Code Online (Sandbox Code Playgroud)
我不确定这里发生了什么.
我在这里阅读了各种来源,并创建了以下10秒后重定向用户的方法.没有同时使用.
PHP的第一次尝试:
header("refresh:10;url=?switch=1")
Run Code Online (Sandbox Code Playgroud)
然后,在JavaScript中进行第二次尝试:
window.setTimeout(function () {
location.href = '?switch=1';
}, 10000);
Run Code Online (Sandbox Code Playgroud)
他们几乎都在工作.它们在使用reveal.js的页面上使用(就像这一个).有时,当URL片段发生变化时,页面根本不再重定向 - 但是,通常情况下,重定向确实有效.
任何人都可以让我知道问题可能是什么,或者是一个阅读有关问题的好资源?
编辑:更改为setIntervalJavaScript版本导致它再次尝试.
我正在使用侦听器来检测用户何时完成文本框; 当文本值改变时,我使用innerHTML将文本粘贴到页面上.
document.getElementById("dateinput").addEventListener("change", function() {
myDate(document.getElementById("dateinput").value);
}, false);
Run Code Online (Sandbox Code Playgroud)
是否有办法监听每个按键,以便在键入时立即按字符粘贴.value字符?我只想在文本框具有焦点时执行此操作.
谢谢.
我想基于名为"names"的localStorage变量创建一个名称数组.我使用String.split()来检测似乎运行良好的新行,但是如果我多次刷新页面则不行.
var names = localStorage.names;
if (!names) {
textArea.style.display = "block";
mybutton.style.display = "block";
} else {
textSplit = localStorage.names.split(/\n/);
copyInput1.innerHTML = textSplit[0];
copyInput2.innerHTML = textSplit[1];
copyInput3.innerHTML = textSplit[2];
}
document.getElementById("textArea").focus();
var showText = function() {
var text = textArea.value;
localStorage.names = text;
textSplit = localStorage.names.split(/\n/);
copyInput1.innerHTML = textSplit[0];
copyInput2.innerHTML = textSplit[1];
copyInput3.innerHTML = textSplit[2];
}
mybutton.onclick = showText;
clearbutton.onclick = localStorage.clear();
Run Code Online (Sandbox Code Playgroud)
任何帮助赞赏.
我标有几个跨度.
<span class="viewEdit">View and edit class one.</span>
<span class="viewEdit">View and edit class two.</span>
<span class="viewEdit">View and edit class three.</span>
<span class="viewEdit">View and edit class four.</span>
<span class="viewEdit">View and edit class five.</span>
Run Code Online (Sandbox Code Playgroud)
我想创建一个功能,增加了一个"上点击"事件,其检测的跨度被点击了.也就是说,如果被点击第一个首先它会返回"0",第二个"1" ...等.
我意识到我可以使用
document.getElementByClassName("viewEdit)
Run Code Online (Sandbox Code Playgroud)
创建一个数组,但我不知道如何检测哪一个被点击.
我试图在这里研究这个问题,但怀疑我说错了,因为我找不到任何东西.如果这是对其他地方的类似问题的回答,请道歉.
阅读了JS对象后,我相信我可以通过以下方式添加方法:
var activity = {
name: null,
start: null,
finish: null,
alarm: function (x) {
if (x === this.start) {
return true;
}
if (x !== this.start) {
return false;
}
}
colour: function (x) {
if (x < this.start) {
return "red";
}
if (x > this.start && x < this.finish) {
return "green";
}
if (x > this.finish) {
return "grey";
}
}
};
Run Code Online (Sandbox Code Playgroud)
当我通过JSFiddle运行时,它说
预期'(结束)'反而看到':'.
旁边有"颜色"的行.
我不确定我做错了什么?