0

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

1 回答 1

2

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

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

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


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

于 2012-05-04T13:17:31.593 回答