Javascript + HTML:按钮未调用函数 Onclick
Javascript + HTML: Button Not Calling on Function Onclick
我做了一个按钮:
<input type="button" value="a" onclick="searchLetter(this)"></input>
单击时,应该调用一个函数来检查字母是否在 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;
}
}
}
但是,按钮没有调用它,我不确定为什么。
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;
}
}
}
这是范围问题。 searchLetter
函数正在尝试访问您的 word
变量,但找不到它,因为它在另一个函数中,而不是在此函数的范围内。
纠正此问题的一种方法是在全局范围内声明 word
。
您的代码中有几处错误。您可以使用浏览器的控制台来查看它们(我认为 f12 在所有浏览器上都可以打开它)。
您必须在 pickWord
函数外声明变量 word
和 wordSpaces
。
https://jsfiddle.net/gael/3vdwLasc/3/
您还应在单击字母时验证该单词是否已初始化。
我做了一个按钮:
<input type="button" value="a" onclick="searchLetter(this)"></input>
单击时,应该调用一个函数来检查字母是否在 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;
}
}
}
但是,按钮没有调用它,我不确定为什么。
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;
}
}
}
这是范围问题。 searchLetter
函数正在尝试访问您的 word
变量,但找不到它,因为它在另一个函数中,而不是在此函数的范围内。
纠正此问题的一种方法是在全局范围内声明 word
。
您的代码中有几处错误。您可以使用浏览器的控制台来查看它们(我认为 f12 在所有浏览器上都可以打开它)。
您必须在 pickWord
函数外声明变量 word
和 wordSpaces
。
https://jsfiddle.net/gael/3vdwLasc/3/
您还应在单击字母时验证该单词是否已初始化。