我有这段代码:
if(document.getElementById('test1').checked){
document.getElementById('next1').disabled = false;
}
else{
document.getElementById('next1').disabled = true;
}
if(document.getElementById('test2').checked){
document.getElementById('next2').disabled = false;
}
else{
document.getElementById('next2').disabled = true;
}
当我尝试添加:
if(document.getElementById('test1').checked && document.getElementById('test2').checked){
document.getElementById('next3').disabled = false;
}
else{
document.getElementById('next3').disabled = true;
它不起作用。我猜那是因为我已经使用了document.getElementById('test1')和document.getElementById('test2')。我的问题是为什么我不能再次使用它,有什么方法可以使它工作?我也试过这个(没用):
$(".lol").change(function(){
if ($('.lol:checked').length == $('.lol').length) {
$("#box").css('background-image', 'url("grey.png")'); //example
} else {
$("#box").css('background-image', 'url("red.png")'); //example
}
});
我将lol类添加到test1和test2并尝试使用id框更改div的背景。简而言之:我需要检查是否标记了两个复选框,如果它们是否存在则执行某些操作,如果它们之前已标记,则已经检查过它们。
答案 0 :(得分:5)
首先,一个好的做法是,如果您要多次使用元素引用,请将其分配给变量。
以下是上述代码的简化......
/* If you're going to use a single element multiple
* times, it's best to assign it to a variable, the
* getElementById() method has to search the DOM every
* time.
*/
var test1 = document.getElementById("test1"),
test2 = document.getElementById("test2"),
next1 = document.getElementById("next1"),
next2 = document.getElementById("next2"),
next3 = document.getElementById("next3");
next1.disabled = !test1.checked;
next2.disabled = !test2.checked;
next3.disabled = !(test1.checked && test2.checked);
修改强> 我的咖啡因被剥夺了大脑忘记解决原来的问题...... 您可以根据需要多次使用getElementById()方法,但没有为该方法分配配额。
答案 1 :(得分:3)
没有这样的限制
你可以多次调用getElementById,它会起作用。你的问题在别处。
此代码:
if(document.getElementById('test1').checked){
document.getElementById('next1').disabled = false;
}
else{
document.getElementById('next1').disabled = true;
}
可缩短为:
document.getElementById('next1').disabled = !document.getElementById('test1').checked;