我最近遇到了 javascript 代码的问题。该脚本更改其 <ins data-ad-slot="4092520690">
参数为 <ins data-ad-slot-"9020596432">
点击 3 次后。但是有一个轻微的控制台错误。
它说“ins1.addEventListener 不是函数”。
错误:
javascript代码:
$(document).ready(function(){
if(sessionStorage.getItem('ins')){
const ins1 = document.getElementsByTagName('4092520690');
var newIns = sessionStorage.getItem('ins');
var newParam = sessionStorage.getItem('param')
ins1.param = newParam;
ins1.innerText = newIns;
}
});
function replaceAfter3Clicks(elem, newElem) {
let count = 0;
ins1.addEventListener('click', () => {
count ++;
if (count === 3) {
sessionStorage.clear(); // Clear all sessionStorage
sessionStorage.setItem('ins', "ins 2"); // First param is the name and the second is the value
sessionStorage.setItem('data-ad-slot', "4092520690");// First param is the name and the second is the value
elem.parentNode.replaceChild(newElem, elem);
}
});
}
const ins1 = document.getElementsByTagName('4092520690');
// pre-made second div for future replacement
const ins2 = document.createElement('ins');
ins2.param = '9020596432';
ins2.innerText = 'ins 2';
replaceAfter3Clicks(ins1, ins2);
谁能告诉我线路有什么问题
ins1.addEventListener('click', () => {
和
replaceAfter3Clicks(ins1, ins2);
是。
最佳答案
你的问题是 ins1
不是一个元素,而是一个类似数组的元素对象。数组(也不是类似数组的对象)不能添加事件监听器。
您需要做的是查看 ins1
并为其中的每个元素添加一个事件监听器;像这样的东西:
function replaceAfter3Clicks(elem, newElem) {
let count = 0;
let callback = function() {
count ++;
if (count === 3) {
sessionStorage.clear(); // Clear all sessionStorage
sessionStorage.setItem('ins', "ins 2"); // First param is the name and the second is the value
sessionStorage.setItem('data-ad-slot', "4092520690");// First param is the name and the second is the value
elem.parentNode.replaceChild(newElem, elem);
}
};
Array.from(ins1).forEach(element => {
element.addEventListener('click', callback);
}
});
关于javascript - ins1.addEventListener 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57812744/