2012-02-18 37 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> 

出力でワンクリックやザッツで特定のタグを持つすべての画像を表示したいと思います:私が書いた

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

<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私が望む画像でunhide関数を呼び出すための新しい関数 "ClassTag"。 TagNameArrayには、呼び出されたものと比較するタグの名前があります。 TagArrayJSは、image-numberを呼び出す配列を各位置に持っています。 PhotoIdArrayJSには、非表示機能で使用されるIDがあります。

質問ですが、これらのデータを使用して関数を作成して、非表示の関数を呼び出したい回数はどのようにすればよいですか?

/おかげ

+1

可能であれば、jQueryを使用することをお勧めします。これはコードを大幅に簡略化します。 –

+0

私は同じことを考えていました。 jQueryはあなたの問題に対する答えです。あなたがそこで行っているネストされたforループは、見るのが楽しいですが、維持するためのそのような痛みです。 jQueryを学ぶのにちょっとした時間を投資してください。 – sngregory

+1

それはおそらく、私は私がやっていることを理解することができるように自分自身を作ってみるだろうが、私はもっとスクリプトを学びたいと思うだろう:) – WibergAnders

答えて

0

while(bb < TagArrayJS[aa].length)に変更while(bb < TagArrayJS.length)

さらに、他のユーザーによると、jQueryを学ぶことは、コードを単純化するためです。

+0

私はちょうど私がより良いjavascriptを知るようになっているように感じる..変更を行った(修正のためのthx)、まだ動作しません.. – WibergAnders

+0

私はコードをデバッグしていると、結果ではない悪いことを実現! 関数呼び出しに小文字の開始文字を含む変数 "Name"があり、比較文字列は.. 問題を申し訳ありません - 私はjQueryを見始めるでしょう - すべての助けをありがとう! – WibergAnders

関連する問題