#javascript
Вопрос:
Я хочу отключить с помощью текстового поля, используя имя класса и идентификатор. Может кто-нибудь сказать мне, почему это не работает. Это работает, если я получаю элементы только по идентификатору.
function disableText() {
var textbox = document.getElementByClassName("text");
if (document.getElementById("check").checked == true) {
textbox[0].disabled = true;
} else {
textbox[0].disabled = false;
}
}
<input type="checkbox" id="check" value="check" onclick="disableText()">
<input class="text" type="textbox">
Комментарии:
1. Это
getElementsByClassName()
множественное число «элементы», и оно возвращает список совпадающих элементов.2. Вам не хватает события триггера, которое вызывает вашу функцию, это может быть «on_click» над элементом управления флажком.
3. также это должно быть
disabled
не в прошедшем времениdisable
,onclick
илиonchange
тогда="disableText()"
Ответ №1:
Проблема в двух опечатках и отсутствии триггера.
Опечатки:
getElementByClassName
должно бытьgetElementsByClassName
(элементы во множественном числе)disable
должно бытьdisabled
(прошедшее время)
Спусковой крючок:
onchange
,onclick
,oninput
затем="disableText()"
на флажке
function disableText() {
var textbox = document.getElementsByClassName("text");
if (document.getElementById("check").checked == true) {
textbox[0].disabled = true;
} else {
textbox[0].disabled = false;
}
}
<input type="checkbox" id="check" value="check" onclick="disableText()">
<input class="text" type="textbox">
Или чтобы вообще не использовать проверку флажка, просто установите значение «отключено» в значение флажка
function disableText() {
var textbox = document.getElementsByClassName("text");
textbox[0].disabled = document.getElementById("check").checked;
}
<input type="checkbox" id="check" value="check" onclick="disableText()">
<input class="text" type="textbox">
Ответ №2:
Вы можете сделать это всего в одной строке, без JS внутри HTML-кода.
check.onclick = () => {document.getElementsByClassName("text")[0].disabled = check.checked};
<input type="checkbox" id="check" value="check">
<input class="text" type="textbox">