javascript函数 - 传递给IE的函数的变量,但不是Firefox

时间:2012-05-04 13:14:06

标签: javascript

下面是一个java脚本函数和调用此函数的单击项的html。我能够通过使用警告告诉我们在使用firefox时传递给函数的四个值是未定义的,但是在使用IE时工作。如果有人发现错误以及如何正确传递这些值,请告诉我。谢谢。

            function LoadChild(lnEntityID, lnEntityCat, FullExpand, EquipID) {

            document.getElementById('dropTypes').disabled = false;
            document.getElementById('dropTypes').style.background = "white";
            DescStatus = 0;

            alert('lnEntityCat : ' + lnEntityCat);
            if (lnEntityCat == 0) {

                alert('First if is hit');
                PageMethods.LoadChild(lnEntityID, lnEntityCat, GLOBALEQUIPID, FullExpand, 0, 0, 1, LoadChildCallback);

            }
            else if (document.getElementById('img' + lnEntityID + lnEntityCat).canExpand == "true") {
                if (document.getElementById('div' + lnEntityID + lnEntityCat).style.display == 'none') {
                    document.getElementById('div' + lnEntityID + lnEntityCat).style.display = 'block';
                    document.getElementById('img' + lnEntityID + lnEntityCat).src = "../images/minus.gif"

                    PageMethods.LoadChild(lnEntityID, lnEntityCat, GLOBALEQUIPID, FullExpand, 0, 0, 1, LoadChildCallback);

                }
                else {
                    document.getElementById('div' + lnEntityID + lnEntityCat).style.display = 'none';
                    document.getElementById('img' + lnEntityID + lnEntityCat).src = "../images/plus.gif"
                }
            }
        }

这是由服务器端代码生成的动态html,它生成项目,点击后调用loadChild

<img canExpand="true" style="cursor:hand" id="img72635" src="../images/plus.gif" EntityID="726" EntityCat="35" onclick="LoadChild(this.EntityID, this.EntityCat, 0, this.lnEquip);">

1 个答案:

答案 0 :(得分:2)

您依赖于元素上的非标准属性被反映为元素对象上的属性。你不能可靠,嗯,依靠它;您需要使用getAttribute代替:

onclick="LoadChild(this.getAttribute('EntityID'), this.getAttribute('EntityCat'), 0, this.getAttribute('lnEquip'));">

(不太确定lnEquip的来源,我在元素的属性中没有看到它;如果您将其作为expando添加到其他位置,则删除getAttribute调用从那个特定的那个。)


请注意,使用非标准属性意味着您的HTML不会validate。现在,您可以按照HTML5 specification中的说明,使用data-前缀这些属性,以符合标准的方式执行此操作。虽然在HTML4及更早版本中仍然无效,但它适用于所有浏览器,并且自HTML5起生效。