Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何让页面上的所有链接在点击时播放声音?_Javascript_Html_Css - Fatal编程技术网

Javascript 如何让页面上的所有链接在点击时播放声音?

Javascript 如何让页面上的所有链接在点击时播放声音?,javascript,html,css,Javascript,Html,Css,我有一个网页有很多链接,而不是插入 onclick="clicksound.playclip()" 对于每一个链接,是否有一种方法可以将页面上的所有链接仅在一个区域中使用该代码?如果“链接”是指所有锚定 可以使用jQuery执行此操作: $(document).ready(function() { $("a").click(function() { clicksound.playclip() }); }); 或纯javaScript: document.links.addEv

我有一个网页有很多链接,而不是插入

onclick="clicksound.playclip()"
对于每一个链接,是否有一种方法可以将页面上的所有链接仅在一个区域中使用该代码?

如果“链接”是指所有
锚定

可以使用jQuery执行此操作:

$(document).ready(function() {
  $("a").click(function() {
    clicksound.playclip()
  });
});
或纯javaScript:

document.links.addEventListener("click", clicksound.playclip);

在主体中添加一个侦听器,查看单击是否来自链接,如果来自链接,则播放声音。您还可以使用document.links获取所有链接,并为每个链接添加一个侦听器,但这似乎效率低下

请注意,并非所有A元素都是链接

编辑 这是一个简单的JS解决方案,upTo和listener附件部分应该在您的库中:

function upTo(root, tagName) {  
  tagName = tagName.toLowerCase();
  do {
    root = root.parentNode;
    if (root.tagName.toLowerCase() == tagName) {
      return root;
    }
  } while (root.parentNode && root.parentNode.tagName)
}

function playSound(evt) {
  var evt = evt || window.event;
  var tgt = evt.target || evt.srcElement;
  if (tgt && tgt.nodeType != 1) tgt = tgt.parentNode;
  tgt = tgt.tagName.toLowerCase() == 'a'? tgt : upTo(tgt, 'a');
  if (tgt && tgt.href && tgt.href != '') annoyUserWithSound();
}

window.onload = function() {
  if (document.body.addEventListener) {
    document.body.addEventListener('click', playSound, false);
  } else if (document.body.attachEvent) {
    document.body.attachEvent('onclick', playSound);
  }
}

function annoyUserWithSound(){
  console.log('be annoyed by sound…');
}

并非所有A元素都是链接。是一个没有onclick方法的live。