Javascript jQuery在vanillajs中的等价物
根据freecodecamp前端轨迹构建JS计算器。我的问题是,我知道如何通过使用jQuery实现这一点,但在将其转换为纯javascript时遇到了问题 代码笔: jQuery: 我试过了,但没用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"; });
["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', ...)
})