.checked选项不适用于我的javascript

时间:2013-04-22 13:03:05

标签: javascript html

我有:

<input type="checkbox" id="showdiv">SHOW ME!

<div id="hello" style="display:none">
  Hello world!
</div>

<script type="text/javascript">
  document.getElementById("showdiv").checked ? document.getElementById("hello").style.display = "inline" : document.getElementById("hello").style.display = "none";
</script>

错误在哪里? 单击时不会显示div ...

5 个答案:

答案 0 :(得分:2)

您应该将脚本包装到复选框的onclick函数中。

这样的事情:

document.getElementById("showdiv").onclick = function() {
    document.getElementById("showdiv").checked ? document.getElementById("hello").style.display = "inline" : '';
};

答案 1 :(得分:1)

添加点击事件的代码在哪里?浏览器不会低估应该运行onclick

(function() {
    var cb = document.getElementById("showdiv");
    cb.onclick = function() {  //would be better to add it with addEventListener
        document.getElementById("hello").style.display = cb.checked ? "block" : 'none';
    }
})();

答案 2 :(得分:1)

您需要在元素上附加event-listener,在单击复选框时会触发您的代码。就像现在一样,您的代码会立即执行,此时不会选中复选框。

document.getElementById("showdiv").addEventListener("click", callback, false);

function callback() {
    if (document.getElementById("showdiv").checked)
       document.getElementById("hello").style.display = "inline";
}

DEMO

请注意,在IE9之前IE不支持addEventListener,因此对于旧版浏览器,您需要解决附加事件监听器的问题。 (在上面引用的文章中描述)

答案 3 :(得分:0)

应该是

document.getElementById("showdiv").onclick = function(){
    document.getElementById("hello").style.display = this.checked ? 'inline' : 'none'
}

演示:Fiddle

答案 4 :(得分:0)

试试这个,用Fiddler测试

document.getElementById("showdiv").addEventListener("click", callback, false);

function callback() {
document.getElementById("showdiv").checked ? document.getElementById("hello").style.display = "inline" : document.getElementById("hello").style.display = "none";
}

Demo