JavaScript onclick中传递的参数:this.id与其他属性

时间:2018-07-31 15:56:07

标签: javascript html parameters onclick

我怀疑我不了解JavaScript参数传递的一些基本知识。

如果单击此按钮,则会在警报框中收到“未定义”消息。

<button onclick="play_audio(this.src)" src="foo.m4a">▶</button>

如果单击此按钮,则字符串值将正确传递:

<button id="foo.m4a" onclick="play_audio(this.id)">▶</button>

此处的Codepen:

https://codepen.io/anon/pen/JBpMYo

1 个答案:

答案 0 :(得分:1)

button没有src属性。但是,您可以使用this.getAttribute('src')

<button src="foo.m4a" onclick="play_audio(this.getAttribute('src'))" >▶</button>
<script>
function play_audio(src){
  console.log("Playing "+src);
}
</script>

建议您使用data-src(可以在data-之后使用任何前缀,而不必使用src)和this.dataset.src来代替(可以使用data- *属性以嵌入自定义数据),因为它将确保您的代码不会与以后的HTML版本的HTML元素属性冲突。参见documentation

<button data-src="foo.m4a" onclick="play_audio(this.dataset.src)" >▶</button>
<script>
    function play_audio(src){
      console.log("Playing "+src);
    }
</script>