0

初学者 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 并得到了相同的行为。

4

1 回答 1

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')"

还要避免使用诸如Checkbox, Label, Submit,Button等变量名,因为它们会产生难以找到的问题。

于 2012-06-24T11:20:49.270 回答