我无法使此代码正常工作,我正在尝试将所有输入字段定位为具有 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";
}
};
答案 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;
你能发现变化吗?
此外,您应该在循环内分配onfocus
和onblur
函数,否则只有最后一个输入才有效。
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>
元素可能是明智的。