javascript 函数 - 传递给函数的变量适用于IE,但不适用于Firefox

javascript function - variables passed into function work for IE, but not Firefox

本文关键字:适用于 函数 IE 不适用 Firefox javascript 变量      更新时间:2023-09-26

下面是一个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);">

您依赖于元素上的非标准属性,这些属性反映为元素对象的属性。你不能可靠地,嗯,依靠它;您需要改用getAttribute

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

(不太确定lnEquip来自哪里,我在元素的属性中看不到它;如果您将其添加为其他地方的 expando,请从该特定调用中删除getAttribute调用。


请注意,使用非标准属性意味着您的 HTML 不会验证。现在,您可以通过在这些属性前面加上 HTML5 规范中所述的data-来以符合的方式执行此操作。虽然这在HTML4及更早版本中仍然无效,但它适用于所有浏览器,并且从HTML5开始有效。