0

我无法让此代码正常工作,我正在尝试将我的所有输入字段定位为具有onbluronfocus效果,但根本没有成功。请帮助我。

我也尝试使用getElementsByClassName但它没有用...... :(

var inputArray = new Array( "ans01", "ans02", "ans03", "ans04", "ans05", "ans06" );     
for( var i = 0; i < inputArray.length; i++ ) {
   answerInput = document.getElementById(inputArray[x]).value;
}       
var inputField = answerInput;
inputField.onfocus = function() {
   if (inputField.value == "Place your answer here") {
      inputField.value = "";
   }
};
inputField.onblur = function() {
   if (inputField.value == "") {
      inputField.value = "Place your answer here";
   }
};
4

2 回答 2

2

有几个问题。首先,您需要将函数移到 for 循环中。否则,它们只会附加到最后一个输入框。其次,不要在函数中使用 input.value,而应该使用 this.value。在事件处理程序中,“this”指的是触发事件的元素。

这是对我有用的完整代码:

var inputArray = document.getElementsByTagName("input");

for (var i = 0; i < inputArray.length; i++ )  {
    answerInput = inputArray[i];

    answerInput.onfocus = function() {
        if (this.value == "Place your answer here") {
            this.value = "";
        }
    }

    answerInput.onblur = function() {
        if (this.value == "") {
            this.value = "Place your answer here";
        }
    }
}
于 2012-07-29T13:37:24.580 回答
0

你有一个错字:

   answerInput = document.getElementById(inputArray[x]).value;

将此行更改为:

   answerInput = document.getElementById(inputArray[i]).value;

你能看出变化吗?

此外,您应该在循环内分配onfocusandonblur函数,否则只有最后一个输入有效。

var inputArray = new Array( "ans01", "ans02", "ans03", "ans04", "ans05", "ans06" );     
for( var i = 0; i < inputArray.length; i++ ) {
    answerInput = document.getElementById(inputArray[i]).value;

    var inputField = answerInput;

    inputField.onfocus = function() {
       if (inputField.value == "Place your answer here") {
          inputField.value = "";
       }
    };

    inputField.onblur = function() {
       if (inputField.value == "") {
          inputField.value = "Place your answer here";
       }
    };
}       

getElementsByTagName("input");正如约翰在他的代码中所展示的那样,使用获取所有<input>元素可能是明智的。

于 2012-07-29T13:35:24.060 回答