<div id="test">
<input type=checkbox>
<input type=text style="visibility:visible;">
<br>
<input type=checkbox>
<input type=text style="visibility:hidden;">
<br>
</div>
<script language=javascript>
window.onload=function(){
var chktxt=document.getElementById("test").getElementsByTagName("input");
for(i=0;i <chktxt.length/2;i++){
(function(i){
chktxt[i*2].onclick=function(){ chktxt[i*2+1].style.visibility= this.checked ? "visible" : "hidden"; }
})(i)
}
}
</script>
<input type=checkbox>
<input type=text style="visibility:visible;">
<br>
<input type=checkbox>
<input type=text style="visibility:hidden;">
<br>
</div>
<script language=javascript>
window.onload=function(){
var chktxt=document.getElementById("test").getElementsByTagName("input");
for(i=0;i <chktxt.length/2;i++){
(function(i){
chktxt[i*2].onclick=function(){ chktxt[i*2+1].style.visibility= this.checked ? "visible" : "hidden"; }
})(i)
}
}
</script>
<input type=checkbox>
<input type=text style="visibility:visible;">
<br>
<input type=checkbox>
<input type=text style="visibility:hidden;">
<br>
</div>
<script language=javascript>
window.onload=function(){
var chktxt=document.getElementById("test").getElementsByTagName("input");
for(i=0;i <chktxt.length/2;i++){
(function(i){
chktxt[i*2].onclick=function(){ chktxt[i*2+1].style.visibility= this.checked ? "visible" : "hidden"; }
})(i)
}
}
</script>
错误的原因是schk和stxt是变量,两个click事件都被添加,但第一个checkbox的click事件中的schk和stxt分别是第三和第四个input,而点击第一个checkbox的时候第二个checkbox的checked不会变,所以没有反应(你可以加alert验证我说的是否正确)。
楼上二位都是正确的,但依然有缺点——chktxt也还是全局的变量,如果在其他地方改变,结果也依然会错。
还有:我只知道二位的意思,却不知道尾部的“(i)”是什么意思。二位请解释下。楼主,不知道你干吗那样写,这样写不好吗(或者干脆用id岂不更好)?
<div id="test">
<input onclick="xxx(0)" type=checkbox>
<input type=text style="visibility:visible;">
<br>
<input type=checkbox>
<input onclick="xxx(1) type=text style="visibility:hidden;">
<br>
</div>
<script language=javascript>
function xxx(i){
var chktxt=document.getElementById("test").getElementsByTagName("input");
var schk=chktxt[i*2];
var stxt=chktxt[i*2+1];
if(schk.checked)
stxt.style.visibility="visible";
else
stxt.style.visibility="hidden";
}
</script>
一直没有第一个text input什么事,你可以alert(this.id)、alert(schk.id)、 alert(stxt.id)看看