如何将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
中的部分文本时,事件监听者仍然没有被调用。有人能告诉我我做错了什么吗?
答
第一 - 你有一个语法错误 - 在这里失去了+
:
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>
你知道临时你错过了一个加号,在'e.type“状态之间:true-”' – adeneo
否则它看起来很好 - > https://jsfiddle.net/xc9rovk4/ .....这是一个错字! – adeneo
解决该语法问题时触发事件。总是检查控制台是否有错误:) – jackarms