0

以下は、Javaスクリプト関数と、この関数を呼び出すクリックされたアイテムのhtmlです。アラートを使用して、Firefoxを使用すると関数に渡される4つの値が未定義であることがわかりましたが、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"
                }
            }
        }

これは、クリックするとloadChildを呼び出すアイテムを生成するサーバー側コードによって生成されるダイナミックHTMLです。

<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 に答える