2011-07-07 5 views
0

Javascriptを:スプリットと変数の問題ここでは、このコードの実行には

http://sandrayoon.com/UAI/www3/newpin.php

私は、クリックされたアイコンの画像ソースをつかみ、「NR」変数に必要な単語を抽出JS関数を書きました:このようにして

var root='img/pins/'; 

var q=0; 

var nr; 

function swapImg(ima){ 

//---extract pin----// 

if(q==0) 
{ 
nr = ima.getAttribute('src').split('/'); 
nr = nr[nr.length-1].split('.')[0]; 
nr = nr.split('1')[0]; 
} 

else if(q==1) 
{ 
nr = ima.getAttribute('src').split('/'); 
nr = nr[nr.length-1].split('.')[0]; 
nr = nr.split('2')[0]; 

} 
//-----------------// 


if(q==0) 
{ 
ima.setAttribute('src',root+nr+'2.png'); 
q=1; 
//document.write (nr); 


} 

else if(q==1) 
{ 
ima.setAttribute('src',root+nr+'1.png'); 
q=0; 
} 


} 

、アイコンをクリックするたびに、それは前後に、「extractedword」2.pngに「extractedword」1.pngからIMG srcを変更します。

複数のアイコンが選択され、別のアイコンが選択されたときに問題が発生します。「抽出された単語」の最後に余分な「1」または「2」が追加され、img srcリンクが狂ってしまいます。

"nr"と同じグローバル変数を共有しているすべてのアイコンが抽出された単語であると考えられますが、関数内でローカル変数を作成すると機能しません。

この問題をどのように修正できますか?

+0

コードをインデントしてください。 –

答えて

1

あなたの問題は、qとしてグローバルと関係が深いと思います。

var root='img/pins/'; 

function swapImg(ima){ 
    //---extract pin----// 
    var nr = ima.getAttribute('src').split('/'); 
    nr = nr[nr.length-1].split('.')[0]; 

    var q = nr.substring(nr.length-1,nr.length); 


    if(q==1) { 
     nr = nr.split('1')[0]; 
     ima.setAttribute('src',root+nr+'2.png'); 
    } else if(q==2) { 
     nr = nr.split('2')[0]; 
     ima.setAttribute('src',root+nr+'1.png'); 
    } 

    //-----------------// 

} 
関連する問題