试图在javascript中定位我的所有输入字段

时间:2012-07-29 13:23:49

标签: javascript getelementbyid getelementsbyclassname

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

我也尝试过使用 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";
   }
};

2 个答案:

答案 0 :(得分: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";
        }
    }
}

答案 1 :(得分:0)

你有一个错字:

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

将此行更改为:

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

你能发现变化吗?

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

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>元素可能是明智的。