【问题标题】:IE not rendering change in element display after changing it with javascript使用 javascript 更改元素显示后,IE 不呈现更改
【发布时间】:2009-08-21 18:47:24
【问题描述】:

情况:

我在另一个 div 容器内有一个复选框和一个 div 容器。单击复选框或复选框的标签时,内部 div 的显示样式应更改。如果显示设置为阻止,则应更改为无,反之亦然。

代码:

HTML:

<input id="oper_sale" type="checkbox" name="oper_sale" onchange="show_hide_operation(this, 'sale_block');">
<label for="oper_sale" class="public">Venta:</label>
   <div id="sale_block" name="sale_block" style="display: none;">
         AAAAAAA
   </div>

Javascript:

// Show or hide parts of a form
function show_hide_operation (oper_choice, oper_block_id) {
    var oper_block = document.getElementById(oper_block_id);
    if (oper_choice.checked == true)
        oper_block.style.display = "block";
    else
        oper_block.style.display = "none";
}

问题:

这在 Firefox 中运行良好,但在 IE 中却不行。当我单击复选框或其标签时,没有任何反应。但是,如果我在单击复选框或其标签后单击屏幕上的其他任何位置,则更改会毫无问题地发生。单击后我尝试模糊复选框,但没有帮助。

简而言之:

在用户点击屏幕的不同部分而不是调用 java 脚本更改样式之前,IE 不会呈现显示样式的更改

非常欢迎任何帮助

【问题讨论】:

  • +1 在解释问题方面做得如此出色。要是所有问题都这么详细就好了。

标签: javascript dynamic coding-style


【解决方案1】:

IE 在失去焦点之前不会为复选框触发 .onchange,您可能希望在此处使用 .onclick 事件。

【讨论】:

    【解决方案2】:

    使用onclick事件,IE中的change事件在元素失去焦点后执行。

    检查this example

    【讨论】:

      【解决方案3】:

      在 IE 中,onchange 事件显然在焦点离开控件时发生,就像 inputtype="text" 一样。

      改用onclick 事件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-21
        • 2018-03-14
        相关资源
        最近更新 更多