我今天才开始使用javascript,并在网上对这个问题进行了研究。但是我无法掌握闭包的用法,尤其是对于我编写的这段代码:
function writeit()
{
var tbox = document.getElementById('a_tbox').value;
var letters = tbox.split("");
for(var i=0;i<letters.length;i++)
{
if(letters[i]==="a")
{
document.a_form.b_tbox.value = i+1 + ". character is a";
}
else if(letters[i]==="b")
{
document.a_form.b_tbox.value = i+1 + ". character is b";
}
else
{
document.a_form.b_tbox.value = i+1 + ". character is not a nor b";
}
}
}
正如你在这里看到的,我想从文本框中获取一个字符串,将其拆分为一个数组,并使用 for 循环更改其中的值。我对代码的期望是,如果文本框包含"abc"作为用户贡献,则输出将为"1。值为 2。值为 b 3。值不是 A 也不是 B"。但它只给出了"3.值不是 A 也不是 B"作为输出。可以做些什么来防止这个问题?
循环
的每次迭代都会覆盖最后一个结果,因为您要替换文本框的值,而不是为每次迭代添加。使用 += 来避免这种情况,如下所示:
document.a_form.b_tbox.value += i+1 + ". character is not a nor b";