首先,我有這個代碼input.addEventListener不是函數與
var input = document.querySelector("fieldset > input");
var label = document.querySelector("fieldset > label");
input.addEventListener("focus", function(event) {
if (label.classList.contains("label-blur")) {
label.classList.remove("label-blur");
label.classList.add("label-focus");
} else {
label.classList.add("label-focus");
}
});
input.addEventListener("blur", function(event) {
if (!input.value) {
label.classList.remove("label-focus");
} else {
label.classList.add("label-blur");
}
});
它正常工作。
然後我改變'querySelector''querySelectorAll'。 我發現信息,addEventListener不能與querySelectorAll(JS error object has no method addEventListener)一起使用。 所以分辨率是這樣的:
var input = document.querySelectorAll("fieldset > input");
var label = document.querySelectorAll("fieldset > label");
for(var i=0; i < input.length; i++) {
input[i].addEventListener("focus", function(event) {
if (label.classList.contains("label-blur")) {
label.classList.remove("label-blur");
label.classList.add("label-focus");
} else {
label.classList.add("label-focus");
}
});
input[i].addEventListener("blur", function(event) {
if (!input.value) {
label.classList.remove("label-focus");
} else {
label.classList.add("label-blur");
}
});
};
可是這樣一來我有新的錯誤:
- 遺漏的類型錯誤:無法讀取屬性「包含」未定義
- 遺漏的類型錯誤的:無法讀取屬性'刪除'未定義
請讓我知道,如何解決這個問題。
我tryed這種方式(由康納黑斯廷斯推薦):
for(var i=0; i < input.length; i++) {
input[i].addEventListener("focus", function(event) {
for(var j=0; j < label.length; j++) {
if (label[j].classList.contains("label-blur")) {
label[j].classList.remove("label-blur");
label[j].classList.add("label-focus");
} else {
label[j].classList.add("label-focus");
}
};
});
input[i].addEventListener("blur", function(event) {
for(var j=0; j < label.length; j++) {
if (!input.value) {
label[j].classList.remove("label-focus");
} else {
label[j].classList.add("label-blur");
}
};
});
};
它的工作好,但每一個 '的addEventListener' 作品是錯誤的。現在只需「標籤焦點」正在工作。它對我的每一個工作(如果任何輸入:焦點,每個標籤顯示)。
而'讓j = i'代替'for(var j = 0; j < label.length; j ++)'什麼也不做。
'升abel [i]'會在相同的索引處爲你指定標籤,儘管你需要使用'let'而不是'var',這樣'i'就被限制在每個循環迭代中。 – 2016-11-27 13:11:29
...另外'if(input [i] .value){...',或者簡單地'if(this.value){...' – 2016-11-27 13:13:31