Javascript 我不明白为什么点击链接后;“未定义”;显示的是,而不是传递的参数
我不明白为什么点击链接后会显示“未定义”。有人知道为什么吗Javascript 我不明白为什么点击链接后;“未定义”;显示的是,而不是传递的参数,javascript,Javascript,我不明白为什么点击链接后会显示“未定义”。有人知道为什么吗 让所有块=[“一”,“两”]; 对于(i=0;i
让所有块=[“一”,“两”];
对于(i=0;i链接;
}
功能测试(n){
警报(n);
}
即使i
在i
的循环值为数组长度之后,也在全局范围内,因此它类似于array[array.length]
,而未定义。要使其工作,请在该点处附加i
的值以及字符串
让所有块=[“一”,“两”];
对于(i=0;i链接`;
}
功能测试(n){
警报(n);
}
即使i
在i
的循环值为数组长度之后,也在全局范围内,因此它类似于array[array.length]
,而未定义。要使其工作,请在该点处附加i
的值以及字符串
让所有块=[“一”,“两”];
对于(i=0;i链接`;
}
功能测试(n){
警报(n);
}
也许您需要的是字符串插值
for (i = 0; i < allBlocks.length; i++) {
document.body.innerHTML += `<p id="" onclick="test(${allBlocks[i]})">Link</p>`;
}
function test(n){
alert(n);
}
for(i=0;i链接`;
}
功能测试(n){
警报(n);
}
这将传递allblocks[i]
的值,而不仅仅是一个字符串
for (i = 0; i < allBlocks.length; i++) {
document.body.innerHTML += `<p id="" onclick="test(${allBlocks[i]})">Link</p>`;
}
function test(n){
alert(n);
}
for(i=0;i链接`;
}
功能测试(n){
警报(n);
}
这将传递allblocks[i]
的值,而不仅仅是一个字符串。因为allblocks[i]
是未定义的。您需要在HTML中呈现i
的值
让所有块=[“一”,“两”];
对于(i=0;iLink”;
}
功能测试(n){
警报(n);
}
。因为所有块[i]
未定义。您需要在HTML中呈现i
的值
让所有块=[“一”,“两”];
对于(i=0;iLink”;
}
功能测试(n){
警报(n);
}
因为单击处理程序中的代码是
test(allBlocks[i])
您的代码似乎处于全局范围,这是它没有抛出错误的唯一原因。单击时,i
的值为allBlocks.length
,该值超出数组的末尾。访问不存在的数组项会导致未定义
最小的更改是使用字符串连接将i
的值放入单击处理程序中,而不是i
:
document.body.innerHTML += '<p id="" onclick="test(allBlocks[' + i + '])">Link</p>';
旁注:element.innerHTML+=…
从来都不是个好主意。它强制浏览器遍历元素
的全部内容,为它包含的DOM结构构建一个HTML字符串,然后将该字符串传递给JavaScript层;然后JavaScript层必须添加到字符串并将其传递回浏览器;然后浏览器必须解析HTML,创建一组新的替换元素,删除元素
的内容,并用这些新元素替换它。除了大量不必要的工作之外,它还会破坏元素上的任何事件处理程序、任何状态信息等。因为单击处理程序中的代码是
test(allBlocks[i])
您的代码似乎处于全局范围,这是它没有抛出错误的唯一原因。单击时,i
的值为allBlocks.length
,该值超出数组的末尾。访问不存在的数组项会导致未定义
最小的更改是使用字符串连接将i
的值放入单击处理程序中,而不是i
:
document.body.innerHTML += '<p id="" onclick="test(allBlocks[' + i + '])">Link</p>';
旁注:element.innerHTML+=…
从来都不是个好主意。它强制浏览器遍历元素
的全部内容,为它包含的DOM结构构建一个HTML字符串,然后将该字符串传递给JavaScript层;然后JavaScript层必须添加到字符串并将其传递回浏览器;然后浏览器必须解析HTML,创建一组新的替换元素,删除元素
的内容,并用这些新元素替换它。除了大量不必要的工作之外,它还会破坏元素上的任何事件处理程序、任何状态信息等。i
充当全局变量。还可以使用模板文本
让所有块=[“一”,“两”];
for(设i=0;i链接`;
}
功能测试(n){
警报(n);
}
i
充当全局变量。还可以使用模板文本
让所有块=[“一”,“两”];
for(设i=0;i链接`;
}
功能测试(n){
警报(n);
}
现在它可以工作了!我认为问题在于范围,但我仍在学习:)谢谢!现在它工作了!我认为问题在于范围,但我仍在学习:)谢谢!