2017-08-11 36 views
-1

這裏就是我試過,由於某種原因的事件監聽器都沒有得到所謂:如何將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

回答

1

第一 - 你有一個語法錯誤 - 在這裏失去了+

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>