javascript - ins1.addEventListener 不是函数

标签 javascript jquery html css console

我最近遇到了 javascript 代码的问题。该脚本更改其 <ins data-ad-slot="4092520690">参数为 <ins data-ad-slot-"9020596432">点击 3 次后。但是有一个轻微的控制台错误。 它说“ins1.addEventListener 不是函数”。

错误:error

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/

相关文章:

html - 为什么 &lt;input&gt; 中的文本放置方式与 <span> 或 &lt;textarea&gt; 中的不同?

javascript - 如何使一个div在两个div之间垂直居中?查询?

javascript - 如何获取可编辑表中的数据并通过 AJAX 发送?

javascript - 在某些宽度问题上删除类和属性

jquery - 淡入背景颜色(按钮)和下拉菜单 superfish 菜单

javascript - PHP AJAX 中去除 HTML 标签

jquery - 如何找到特定文本后面的 anchor

javascript - 使用 jquery 时不显示 div

javascript - AngularJS $apply 在输入类型范围上的 ngChange 之后不起作用

javascript - 使用本地存储javascript点击刷新页面上的元素切换