首页 > 解决方案 > 传递给函数的 Firefox JavaScript 参数未定义

问题描述

我看到以前就该主题提出的一些问题,但要么没有得到回答,要么我不明白答案。

为什么以下内容适用于除 FireFox 之外的所有浏览器?当onplay()事件触发时,传递的参数是undefined.

<html>
    <head><title></title>
    </head>
    <body>
        <audio id="audioplayer" name="player1" preload="none" onplay="audioStarted(audioplayer[0]);" src="http://kerkradio.co.za:8000/audio/beste-luisteraar.mp3?a=1" controls> </audio><br/>
        <audio id="audioplayer" name="player2" preload="none" onplay="audioStarted(audioplayer[1]);" src="http://kerkradio.co.za:8000/audio/beste-luisteraar.mp3?a=2" controls> </audio><br/>
        <audio id="audioplayer" name="player3" preload="none" onplay="audioStarted(audioplayer[2]);" src="http://kerkradio.co.za:8000/audio/beste-luisteraar.mp3?a=3" controls> </audio><br/>
        <audio id="audioplayer" name="player4" preload="none" onplay="audioStarted(audioplayer[3]);" src="http://kerkradio.co.za:8000/audio/beste-luisteraar.mp3?a=4" controls> </audio><br/>
    </body>

<script>
    function audioStarted(thePlayer) {alert(thePlayer.src);}
</script>
</html>

标签: javascriptfirefoxundefined

解决方案


它完全有效(我猜它可能)是由于 javascript 将 id 奇怪地提升到全局范围(使 getElementById 奇怪地多余)而导致的异常。Firefox 将这段代码复制回来是完全正确的,如果它真的适用于所有其他浏览器,我会感到惊讶

尝试传递关键字而不是那个 audioplayer[n] jive - 你的情况是旨在处理this的那种情况this


推荐阅读