У меня есть две флажки на форме. Когда кто-то проверяет второй блок, мой JavaScript проверяет, проверено ли первое поле. Если первый флажок не установлен, тогда мой JavaScript проверяет его. По какой-то причине, однако, мой обход DOM не работает так, как должен, и первый ящик не проверяется; вместо этого я получаю «TypeError: firstCheckbox is null» в строке 10 (оператор «if»). Почему это не работает?Почему мой JavaScript DOM-обход не работает?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title></title>
<script type="text/javascript">
function setMe(secondCheckbox){
// alert(secondCheckbox.parentNode.previousSibling.nodeName);
var firstCheckbox = secondCheckbox.parentNode.previousSibling.lastChild;
if(secondCheckbox.checked && !firstCheckbox.checked){
firstCheckbox.checked = true;
}
}
</script>
</head>
<body>
<div>
<form>
<table border="1" cellspacing="4" cellpadding="4">
<thead>
<tr>
<th>
<label for="input01">input01</label><br>
<input type="text" id="input01" name="input01">
</th>
<th>
<label for="input02">input02</label><br>
<input type="text" id="input02" name="input02">
</th>
<th>
<label for="input03">input03</label><br>
<input type="checkbox" id="input03" name="input04">
</th>
<th>
<label for="input04">input04</label><br>
<input type="checkbox" id="input04" name="input04" onChange="setMe(this);">
</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan="2">
<button type="submit">submit</button>
</td>
<td colspan="2">
<button type="reset">reset</button>
</td>
</tr>
</tbody>
</table>
</form>
</div>
</body>
</html>
Вы можете быть выбрать «пробела» в документе вместо элемента. См. Https://developer.mozilla.org/en-US/docs/Web/API/Node.previousSibling –
Все ваши метки указывают на один вход. – Sebastien
@Sebastien Исправлено это, спасибо. – Brian