Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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 jQuery在vanillajs中的等价物_Javascript_Jquery_Html - Fatal编程技术网

Javascript jQuery在vanillajs中的等价物

Javascript jQuery在vanillajs中的等价物,javascript,jquery,html,Javascript,Jquery,Html,根据freecodecamp前端轨迹构建JS计算器。我的问题是,我知道如何通过使用jQuery实现这一点,但在将其转换为纯javascript时遇到了问题 代码笔: jQuery: 我试过了,但没用 ["clear", "clearAll"].forEach.call(function(e){ e.addEventListener("click", function(){ totalNumber.textContent = "0"; });

根据freecodecamp前端轨迹构建JS计算器。我的问题是,我知道如何通过使用jQuery实现这一点,但在将其转换为纯javascript时遇到了问题

代码笔:

jQuery:

我试过了,但没用

["clear", "clearAll"].forEach.call(function(e){
        e.addEventListener("click", function(){
            totalNumber.textContent = "0";
        });
    });
js:


这段代码对forEah的工作方式有一些错误的假设

每个数组都有从array.prototype继承的forEachmethod,所以不需要使用forEach.call [clear,clearAll]是一个字符串数组,而不是DOM元素,因此您需要构造一个DOM元素数组,或者在forEach方法中通过id获取这些元素。 选择以下选项之一

按id选择元素并迭代

var clear = document.getElementById("clear");
    var clearAll = document.getElementById("clearall");

})  

   [clear, clearAll].forEach(function(e){
        e.addEventListener("click", function(){
            totalNumber.textContent = "0";
        });
    });
或者迭代从querySelectorAll获得的节点列表

或者迭代id并按id获取元素

['clear', 'clearAll'].forEach(function(id) {
  document.getElementById(id).addEventListener('click', ...)
})

我想把你介绍给我。它不是所有的东西都等价,但它非常有用。-而且,您的VanillaJS版本与jquery示例并不等价。谢谢。非常感谢。看,这是我的问题。我已经使用jQuery很长时间了,以至于我无法用纯javascript编写任何代码。这很尴尬,所以我基本上必须再次学习javascript。@freedomn-m虽然我理解你的意思,但我不能同意。jQuery并不是自动执行此任务的最佳工具。这当然是一个很好的工具,但是学习原生DOM接口总是很好的。谢谢Yury,解释非常清楚并且很有帮助,但是两者都不起作用。通过点击计算器上的C或AC,什么都不会发生。检查控制台绑定工作。没有发生任何事情与如何添加事件侦听器无关,而是与侦听器逻辑本身有关。
["clear", "clearAll"].forEach.call(function(e){
    e.addEventListener("click", function(){
        totalNumber.textContent = "0";
    });
});
var clear = document.getElementById("clear");
    var clearAll = document.getElementById("clearall");

})  

   [clear, clearAll].forEach(function(e){
        e.addEventListener("click", function(){
            totalNumber.textContent = "0";
        });
    });
[].forEach.call(document.querySelectorAll('#clear, #clearAll'), function(el) {
 ...
})
['clear', 'clearAll'].forEach(function(id) {
  document.getElementById(id).addEventListener('click', ...)
})