1

我已经尝试了所有可能的替换图像的方法组合,但没有找到可行的解决方案。

我在这里上传了有问题的代码:http: //dl.dropbox.com/u/2959730/index.html

我建议下载源代码并尝试您的代码。问题在于应该附加到#playButt img 的 player.playPause() 函数。

请帮助我已经挣扎了几个小时了!

编辑:

我已经更正了所有内容,并且根据建议,我现在将此代码用于 playPause(),但它仍然无法正常工作!. 这是我遇到过的最令人沮丧的事情...

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); 
    }) 
} 
4

3 回答 3

1

playPause()var playerplaylist.js中被定义为 , 的属性。

您的 onclickonclick="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.status在该回调中未定义,因为this现在指的是元素#play。要解决此问题,您需要var status = this.status在回调之前声明,并在回调内部进行测试if(status)

另外两件事:

  1. .fadeIn(200)应该放在回调中,否则它在fadeOut 完成之前运行(所以根本没有淡入淡出效果)。
  2. 您不需要var playEl = document.getElementById('play');,因为您使用 jQuery 来获取元素。在回调内部,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". 事实上,整个#ipod2 是重复的。我检查了源代码,但它不存在,仅在实时 DOM 中。如果您$("#play").remove();在控制台中,您会看到图像替换代码现在可以正常工作。但是,您需要找出在 JS 中克隆 ipod2 的位置并修复它。

于 2011-01-04T00:15:52.697 回答
0

据我所知,您实际上并没有附加到#playButt 图像。您所做的只是定义该图像的 onclick 属性并调用playPause未定义的 。

自从您提出问题以来,您是否更改过文档?

如果你有 onclick="player.playPause(); return false;" 是否有效 在#playButt 图像的onclick 处理程序中?

于 2011-01-03T23:56:25.587 回答
0

你肯定需要 player.playPause() 而不仅仅是 playPause()。

而且您似乎在 slider.js 的 css 或 height 函数中存在问题,因为 Firebug 报告 a[0] 未定义。

于 2011-01-04T00:28:46.103 回答