2012-05-04 63 views
0

下面是一個java腳本函數和用於調用此函數的單擊項目的html。通過使用警報,我可以知道傳入函數的四個值在使用Firefox時未定義,但在使用IE時有效。請讓我知道是否有人看到錯誤以及如何正確傳遞這些值。謝謝。javascript函數 - 傳遞給函數的變量適用於IE,但不適用於Firefox

  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);"> 
+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起即可生效。

+0

謝謝,getAttribute就是我一直在尋找的東西。對不起 - JavaScript更新,並將舊的舊代碼轉換爲其他瀏覽器中可用的代碼。再次感謝。 – njj56

+0

@ njj56:很高興幫助!最好, –

相關問題