【问题标题】:innerHTML doesn't refresh the display on IE9innerHTML 不刷新 IE9 上的显示
【发布时间】:2012-06-24 11:16:04
【问题描述】:

初学者 Javascript 问题。

当我设置一个元素的 innerHTML 字段时 - 它不会引用显示,直到我在页面中上下滚动。这只发生在 IE9 中

这是我的代码:

<ul id="zzz">
<li>
    <input title="Delete" name="DeleteFiles" value="a5e342fd-9180-416b-9938-e66218f275ee"
        id="DeleteCb" onchange="SetDelete(DeleteCb,DeleteLabel)" type="checkbox">  <span id="DeleteLabel" > </span>
    <a href="MyJavaTest_files/_MG_0126.jpg">_MG_0126.jpg</a>
    <br>
    <img style="max-width: 400px;" src="MyJavaTest_files/_MG_0126.jpg">
</li> </ul>

<script type="text/javascript">
SetDelete = function (checkBox, Label) {
    if (checkBox.checked)
        Label.innerHTML="<B>Delete<B>";
    else
        Label.innerHTML = "";}</script>

这是我点击时的样子:

这里是它在我最小化和最大化之后的样子,或者其他任何会导致它重新绘制该区域的东西。

我也尝试了 jQuery HTML 并得到了相同的行为。

【问题讨论】:

    标签: javascript internet-explorer-9


    【解决方案1】:

    您需要使用document.getElementById,因为您传递的是id 值而不是节点本身:

    SetDelete = function (checkBox, Label) {
        var checkbox = document.getElementById(checkBox);
        var Label = document.getElementById(Label);
        if (checkBox.checked)
            Label.innerHTML="<B>Delete<B>";
        else
            Label.innerHTML = "";
    }
    

    并在调用时使用引号:

    onchange="SetDelete('DeleteCb', 'DeleteLabel')"
    

    还要避免使用变量名,例如CheckboxLabelSubmitButton 等,因为它们会产生难以找到的问题。

    【讨论】:

    • 我的目的不是发送 ID 值,而是发送元素本身。我不想在这里使用 Id,因为这样的内容会在页面中多次存在,因此许多元素将具有相同的 id。
    猜你喜欢
    • 1970-01-01
    • 2012-01-22
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    相关资源
    最近更新 更多