2011-01-03 18 views
1

イメージを置き換えるためのすべての方法の組み合わせを試しましたが、問題の解決方法が見つかりませんでした。 http://dl.dropbox.com/u/2959730/index.htmlイメージの置き換えによるエラー

私は、ソースをダウンロードし、あなたのコードをしようと示唆している:

は、私はここに問題のあるコードをアップロードしました。問題は#playButt imgにアタッチされるplayer.playPause()関数にあります。

私は何時間も苦労してきました。

EDIT:

私はすべてを修正しましたし、提案どおり、私はplayPause()のために今、このコードを使用していますが、それはまだ動作しません!。これは私が今まであなたが実際に私が言うことができるものから、しかし#playButtイメージに添付されていない

this.playPause = function(){ 
    this.status = !this.status; 
    var status = this.status; 
    var playEl = document.getElementById('play'); 
    $("#play").fadeOut(200, function(){ 
     if(status) 
      playEl.src = "img/pauseButton.png"; 
     else 
      playEl.src = "img/playButton.png"; 
     $("#play").fadeIn(200); 
    }) 
} 
+0

私の更新を見れば、 'div#ipod2'全体が複製されていて、重複IDが問題を引き起こしています。 –

答えて

1

playPause()は、 var playerの特性として、 playlist.jsで定義される。

あなたのonclick onclick="playPause(); return false;"は、グローバルスコープでその機能を見つけることができないため、playPauseを呼び出していません。あなたはにあなたのonclickを変更する必要があります。

onclick="player.playPause(); return false;" 

更新:

問題は、このコールバックを使用することです:

$("#play").fadeOut(200, function(){ 
    if(this.status) 
     playEl.src = "img/pauseButton.png"; 
    else 
     playEl.src = "img/playButton.png"; 
}).fadeIn(200); 

this.statusthisので、そのコールバック内で定義されていません要素#playを参照しています。この問題を解決するには、コールバックの前にvar status = this.statusを宣言し、コールバック内でif(status)をテストする必要があります。

他の二つの事柄:

  1. .fadeIn(200)はフェードアウトが完了する前に、それ以外の場合は実行されている、コールバックの内側に配置する必要があります(ので、全くフェード効果ありません)。
  2. 要素を取得するためにjQueryを使用しているので、var playEl = document.getElementById('play');は必要ありません。コールバックの内部では、thisキーワードはすでに要素を参照しています。

完全なコードは次のようになります。

var status = this.status = !this.status; 
$("#play").fadeOut(200, function(){ 
    if(status) 
     this.src = "img/pauseButton.png"; 
    else 
     this.src = "img/playButton.png"; 
    $(this).fadeIn(200); 
}); 

別の更新:

上記の修正に加えて、さらなる問題があります。このページには、id="play"という2つの要素があるようです。実際、#ipod2全体が複製されています。私はソースコードをチェックしましたが、そこにはなく、ライブDOMにしかありません。コンソールに$("#play").remove();がある場合、イメージ置換コードが動作するようになります。しかし、あなたは、ipod2がJSでクローンされている場所を見つけ出し、それを修正する必要があります。

+0

おそらくスライダーの前後にスライドさせるスライダーのJavaScriptと関係があります。私は本当にヒントをありがとう、と私は間違いなくそれを調べます。 – jpopesculian

+0

ありがとうございました。私はついにそれを理解した。私はipod2のクローンを生み出すスライダに決して終わりのない機能を持っていました。私はそれを修正し、それは完全に動作します。私はあなたを愛しています。 – jpopesculian

+0

@ user561928おめでとうございます。 –

0

...を扱ってきた最もイライラするものです。あなたがしているのは、その画像のonclick属性を定義し、定義されていないplayPauseを呼び出すだけです。

質問をしてから文書を変更しましたか?

onclick = "player.playPause(); false false;を返します。 #playButt画像のonclickハンドラで

+0

私は実際にそれを少し前に修正しました...ここでコードを更新しました:http://dl.dropbox.com/u/2959730/index.html。それでもまだ動作しません。 – jpopesculian

0

必ずplayPause()の代わりにplayer.playPause()を使用する必要があります。

また、[0]が未定義であることをFirebugが報告しているので、slider.jsのCSS機能や高さ機能に問題があるようです。

関連する問題