如何将lambda和javascript forEach循环结合起来?

如何将lambda和javascript forEach循环结合起来?

问题描述:

这里就是我试过,由于某种原因的事件监听器都没有得到所谓:如何将lambda和javascript forEach循环结合起来?

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
</head> 
<body>Some sample text inside body 
    <div id="log"></div> 
    <script> 
     var clipboardEventsHandler = ['beforecut', 'cut', 'beforecopy', 'copy', 'paste'].forEach((evt) => { 
      document.addEventListener(evt, (e) => { 
       log.innerHTML += ("-" + e.type + "-"); 
       log.innerHTML += (document.queryCommandSupported(e.type) ? "-" + e.type + " supported-" : "-" + e.type + " **not** supported-"); 
       log.innerHTML += (document.queryCommandEnabled(e.type) ? "-" + e.type + " enabled-" : "-" + e.type + " **not** enabled-"); 
       log.innerHTML += (document.queryCommandState(e.type) ? "-" + e.type " state:true-" : "-" + e.type + " state:false/null-"); 
       log.innerHTML += "<br>" 
      }) 
     }); 
    </script> 
</body> 
</html> 

我怀疑evt参数的类型传递到的addEventListener。我通过在将其传递到addEventListener之前记录typeof evt来确认它是一个字符串。它说它的string。但是,当我复制body中的部分文本时,事件监听者仍然没有被调用。有人能告诉我我做错了什么吗?

+3

你知道临时你错过了一个加号,在'e.type“状态之间:true-”' – adeneo

+0

否则它看起来很好 - > https://jsfiddle.net/xc9rovk4/ .....这是一个错字! – adeneo

+0

解决该语法问题时触发事件。总是检查控制台是否有错误:) – jackarms

第一 - 你有一个语法错误 - 在这里失去了+

e.type) ? "-" + e.type " state:true-" 
         ^---- 

二 - 它通过相应的ID使用document.getElementById更好的访问内容,而不是直接:

document.getElementById('log') 

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <title></title> 
 
</head> 
 
<body>Some sample text inside body 
 
    <div id="log"></div> 
 
    <script> 
 
     var log = document.getElementById('log'); 
 
     var clipboardEventsHandler = ['beforecut', 'cut', 'beforecopy', 'copy', 'paste'].forEach((evt) => { 
 
      document.addEventListener(evt, (e) => { 
 
       log.innerHTML += ("-" + e.type + "-"); 
 
       log.innerHTML += (document.queryCommandSupported(e.type) ? "-" + e.type + " supported-" : "-" + e.type + " **not** supported-"); 
 
       log.innerHTML += (document.queryCommandEnabled(e.type) ? "-" + e.type + " enabled-" : "-" + e.type + " **not** enabled-"); 
 
       log.innerHTML += (document.queryCommandState(e.type) ? "-" + e.type + " state:true-" : "-" + e.type + " state:false/null-"); 
 
       log.innerHTML += "<br>" 
 
      }) 
 
     }); 
 
    </script> 
 
</body> 
 
</html>