2012-02-18 77 views
0

我對javascript很陌生,所以可能有一個簡單的解決方案來解決我的問題。 我製作了一個xml文件,用於存儲有關要添加到我的網頁中的圖像的信息,並添加了這些標籤。 我發現了一個js函數,它可以通過點擊鏈接隱藏/顯示圖像,就像我想要的那樣。 但是我想表明帶有特定標籤的所有圖像,在點擊這就是問題的所在從一次點擊多次呼叫js函數

<script type="text/javascript"> 
function unhide(divID) 
{ 
var item = document.getElementById(divID); 
if (item) 
    { 
    item.className=(item.className=='hidden')?'unhidden':'hidden'; 
    } 
} 
function ClassTag(Name) 
{ 
var TagNameArrayJS = <?php echo json_encode($TagNameArray); ?>; 
var TagArrayJS = <?php echo json_encode($TagArray); ?>; 
var PhotoIdArrayJS = <?php echo json_encode($PhotoIdArray); ?>; 

var aa = 0; 
var bb = 0; 
    while(aa < TagNameArrayJS.length) 
    { 
     if(TagNameArrayJS[aa] == Name) 
     { 
      while(bb < TagArrayJS[aa].length) 
      { 
       unhide(PhotoIdArrayJS[TagArrayJS[aa][bb]]); 
       bb = bb + 1; 
      } 
     } 
    aa = aa + 1; 
    }           
} 
</script> 

輸出:

<script type="text/javascript"> 
function unhide(divID) 
{ 
var item = document.getElementById(divID); 
if (item) 
    { 
    item.className=(item.className=='hidden')?'unhidden':'hidden'; 
    } 
} 
function ClassTag(Name) 
{ 
var TagNameArrayJS = ["All","Anders","Hanna","Church","Party"]; 
var TagArrayJS = [[0,1,2],[0],[0,1,2],[0,2],[1]]; 
var PhotoIdArrayJS = ["JPG001","JPG002","JPG003"]; 

var aa = 0; 
var bb = 0; 
    while(aa < TagNameArrayJS.length) 
     { 
     if(TagNameArrayJS[aa] == Name) 
      { 
       while(bb < TagArrayJS[aa].length) 
        { 
         unhide(PhotoIdArrayJS[TagArrayJS[aa][bb]]); 
         bb = bb + 1; 
        } 
      } 
     aa = aa + 1; 
     }           
} 
</script> 

的HTML:

<a href="javascript:ClassTag('hanna');">Hanna</a> 

我寫的一個新的函數「ClassTag」在我想要的圖像上調用取消隱藏功能。 TagNameArray具有標籤的名稱,以便與被調用進行比較。 TagArrayJS在每個位置都有一個數組,用於調用圖像編號。 PhotoIdArrayJS具有用於取消隱藏功能的Id。

所以這個問題,我如何編寫一個函數,使用這些數據來調用我的unhide函數我想要的次數?

/感謝

+1

我會建議使用jQuery,如果可能的話 - 這將大大簡化您的代碼。 – 2012-02-18 08:53:42

+0

我只是在想同樣的事情。 jQuery是你的問題的答案。嵌套的for循環有很多樂趣可以看,但這樣的痛苦需要維護。花一點時間學習jQuery,你就會喜歡它。 – sngregory 2012-02-18 09:02:23

+1

它可能會,我想學習更多的腳本雖然所以我雖然我會嘗試讓我自己,這樣我就能明白我在做什麼:) – WibergAnders 2012-02-18 09:02:30

回答

0

變化while(bb < TagArrayJS.length)while(bb < TagArrayJS[aa].length)。另外,正如其他用戶所說,考慮學習jQuery是因爲它會簡化代碼。

+0

我會,只是覺得我必須更好地瞭解JavaScript ..做了更改(THX爲更正),仍然無法正常工作雖然.. – WibergAnders 2012-02-18 10:20:22

+0

好吧,意識到我在調試代碼有多糟糕,而不是後果! 函數調用有一個小的起始字母的「名稱」變量,比較字符串不.. 對不起,麻煩 - 我將開始尋找jQuery,我保證 - 感謝所有的幫助! – WibergAnders 2012-02-18 10:36:29