2012-02-16 10 views
1

を使用してAAのhref内のimg srcを変更する:押すと笑顔不活性することで囲まれたIMGのSRCを置き換えるために、私はフリップ機能を基本的に私は、次のhtmlているのjavascript

<li> 
    <a href=\"p://emotion/appreciate\" onclick=\"flip()\"> 
     <img src=\"smile.png\" /> 
    </a> 
</li> 

をしたい、と変更それがsmile-inactive.pngに入っていれば、もう一度smile.pngに戻ります。 imgにIDを与えたくない場合は、document.getElementByIdを実行する必要はありません。

<a href=\"p://emotion/appreciate\" onclick=\"flip.call(this)\"> 

function flip(){ 
    var img = this.children[0]; 
    if (/smile\.png/.test(img.src)) 
     img.src = "smile-inactive.png"; 
    else 
     img.src = "smile.png" 
} 

EDIT

として:あなたのフリップ関数内

+0

これは、jQueryのようなフレームワークが本当に助けることができるタスクです。ブラウザの互換性により多くの時間を節約できます。 – Paul

+1

イメージにIDを与えてみませんか? –

答えて

2

、私はあなただけでクリックしたアンカーへthisポイントは、最初childNodeがようimgをつかむことを確認してしまいます@am not i amを指摘し、切り替えてブラウザのサポートをわずかに向上させることができます

var img = this.getElementsByTagName("img")[0]; 
から
var img = this.children[0]; 

+0

ああ、あなたは私が提案しようとしていた両方の修正を修正しました。 +1しかしちょうどちょっとちょっとちょっと正しい、私は正規表現の '.'をエスケープするだろう。しかし、実際のところ違いはありません。 –

+0

@amnotiam - 確かに - エスケープ。子供たちはあなたに "良いもの"を与えている間、ええ、私はchildNodesもテキストノードを与えています:) - 私はあなたのdom ninjaではありません! –

+0

私はDOM忍者ではありません...私はちょうどStackOverflowで再生します。つまり、 'children'の代わりに' getElementsByTagName'を使ってもう少しブラウザサポートを受けることができますが、本当にあなたはFF3しか得ていないので、誰が気にします。 –

0

、両方の画像を取るものにそれらをマージし、ちょうど示されているかを判断するためにオフセット使用。
これはCSSで簡単に実行できます。

+0

CSSはクリックイベントを手助けしません。私たちが「ホバー」について話していたら、私は完全に同意します。 –

+0

私はあなたが何を意味しているのか知っています。私も同様に、2つの異なる画像を読み込まないようにしたいと考えました。 –

+0

ええ、それはまだ良い考えです。クラスを交換するのにちょっとしたJSが必要でしょうか。 –

関連する問題