Javascript代码无法正常运行

时间:2014-03-31 01:06:33

标签: javascript html dom

我是Javascript的新手,我不知道我对这段代码做错了什么。每当我运行代码时,它都无法正常运行,我不知道要用它来改变什么。我试图让它循环通过5个按钮,并用用户在输入框中输入的内容替换按钮的innerHTML。例如,如果用户输入了“馅饼”。在输入框和单击按钮4中,按钮4的innerHTML将重命名为pie。这是我的代码:

var inputValue = document.getElementById("textbox").value;

function click() {
    for (var x = 1; x <= 5; x++) {
        if (this.id == "b" + x) {
            document.getElementById("b" + x).innerHTML = inputValue;
        }
    }
}

for (var i = 1; i <= 5; i++) {
    document.getElementById("b" + i).onclick = click;
}

3 个答案:

答案 0 :(得分:1)

for (var i = 1; i <= 5; i++) {
   document.getElementById("b" + i).onclick = function(){
         this.innerHTML = inputValue;
   };
}

答案 1 :(得分:1)

您只需要在点击处理程序中移动提取输入框内容的行:

function click() {
    var inputValue = document.getElementById("textbox").value;
    for (var x = 1; x <= 5; x++) {
        if (this.id == "b" + x) {
            document.getElementById("b" + x).innerHTML = inputValue;
        }
    }
}

for (var i = 1; i <= 5; i++) {
    document.getElementById("b" + i).onclick = click;
}

这里是fiddle

但实际上,你根本不需要点击处理程序中的循环。你可以这样做:

function click() {
    var inputValue = document.getElementById("textbox").value;
    this.innerHTML = inputValue;
}

Another fiddle

答案 2 :(得分:1)

我认为你可以更轻松地做到这一点:

function click(){
    var inputValue = document.getElementById("textbox").value;
    this.innerHTML = inputValue;
}