我做了一个按钮:
word
单击时,应该调用一个函数来检查字母是否在spaces
中,如果是,则将其添加到相应位置的 function searchLetter(obj)
{
var letter = obj.value;
obj.disable;
for (i = 0; i <= word.length; i++){
if (word[i] == letter) {
wordSpaces[i] = letter;
document.getElementById('spaces').innerHTML = wordSpaces.join('');
break;
}
}
}
数组中:
GROUP BY
但是,按钮没有调用它,我不知道为什么。
答案 0 :(得分:2)
function pickWord() {
var word = dictionary[Math.floor(Math.random() * dictionary.length)];
var wordSpaces = [];
for (var i = word.length - 1; i >= 0; i--)
wordSpaces.push("_ ");
document.getElementById('spaces').innerHTML = wordSpaces.join('');
}
在您的代码中,word
和wordSpaces
是该函数的局部变量。
但是在
function searchLetter(obj) {
var letter = obj.value;
for (var i = 0; i <= word.length; i++) {
您尝试引用word
变量。这就是为什么它没有进入循环
所以它必须像:
var word, wordSpaces;
function pickWord() {
word = dictionary[Math.floor(Math.random() * dictionary.length)];
wordSpaces = [];
for (var i = word.length - 1; i >= 0; i--)
wordSpaces.push("_ ");
document.getElementById('spaces').innerHTML = wordSpaces.join('');
}
function searchLetter(obj) {
var letter = obj.value;
for (var i = 0; i <= word.length; i++) {
if (word[i] == letter) {
wordSpaces[i] = letter;
document.getElementById('spaces').innerHTML = wordSpaces.join('');
break;
}
}
}
答案 1 :(得分:1)
这是一个范围问题。 searchLetter
函数正在尝试访问您的word
变量,但无法找到它,因为它在另一个函数中,而不在此函数的范围内。
解决此问题的一种方法是在全局范围内声明word
。
答案 2 :(得分:1)
您的代码中存在多个错误。您可以使用浏览器的控制台查看它们(我认为f12会在所有浏览器上打开它)。
您必须在word
函数之外声明变量wordSpaces
和pickWord
。
https://jsfiddle.net/gael/3vdwLasc/3/
您还应该在单击字母时验证该单词是否已初始化。