点击事件在Chrome扩展程序选项页面中不起作用

硬质合金

在我的选项页面中,我生成一些带有输入数字和按钮的行,这些行与chrome存储器中的条目相关。

问题是我为按钮创建的事件侦听器根本无法工作。

options.html

<html>
<head>
    <title>Select the movie's Id</title>
    <style>
        body: { padding: 10px; }

        .style-1 input[type="number"] {
          padding: 10px;
          border: solid 1px #dcdcdc;
          transition: box-shadow 0.3s, border 0.3s;
          width: 5em;
        }
        .style-1 input[type="number"]:focus,
        .style-1 input[type="number"].focus {
          border: solid 1px #707070;
          box-shadow: 0 0 5px 1px #969696;
        }
    </style>
</head>

<body>
    <legend style="border-bottom: solid 1px">Insert</legend>
    <input type="number" name="id" id="id" value="">
    <button id="save">Insert</button>
    <br>
    <br>
    <legend style="border-bottom: solid 1px">Manage</legend>
    <div id="ghost" style="display: none">
        <input type="number" name="VAL">
        <button name="DEL" id="" >Delete</button>
        <br><br>
    </div>

    <script src="options.js"></script>
</body>

options.js

document.getElementById('save').addEventListener('click', save_options);

chrome.storage.sync.get('movieId', function(result){
    for (var i=0; i<result.movieId.length; i++){
       createRow(result.movieId[i]); 
    }
});

function save_options() {
    var id = document.getElementById('id').value;
    chrome.storage.sync.get('movieId', function(result){
        var ids = result.movieId;
        ids.push(id);
        chrome.storage.sync.set({
            'movieId': ids
        }, function() { 
        });
        location.reload();
    });    
}

function createRow(pos){
    var newRows= document.getElementById('ghost').cloneNode(true);
    newRows.id= '';
    newRows.style.display= 'block';
    var newRow= newRows.childNodes;
    for (var i= 0; i< newRow.length; i++){
        var newName= newRow[i].name;
        if (newName){
            newRow[i].name = newName+pos;
            newRow[i].id = pos;
            newRow[i].value = pos;
        }
    }
    var insertHere= document.getElementById('ghost');
    insertHere.parentNode.insertBefore(newRows,insertHere);

    document.getElementById(pos).addEventListener('click', delet());
}

function loop(arrayIds){
    console.log('loop');
    for (var i=0; i<arrayIds.length; i++){
        createRow(i);
    }
}

function delet(){
    console.log("this.id");
    //chrome.storage.sync.remove(id);
}

这样,当我单击任何“删除”按钮时,什么都不会发生。

我尝试了所有可以想到的组合,document.getElementById(pos).addEventListener('click', delet());但没有一个起作用。

阿德南·乌默(Adnan umer)
document.getElementById(pos).addEventListener('click', delet());

应该是

document.getElementById(pos).addEventListener('click', delet);

在您的代码段中,您正在调用,delet因此该函数的结果将添加为事件监听器undefined如果要绑定delet为事件处理程序,请将其传递给addEventListener而不调用它。

编辑

正如我看到的代码所示,您将两者赋予相同的ID inputbutton并且在调用document.getElementById它返回input而不是返回button,将事件绑定到input而不是button

要解决这个问题,请createRow用此替换

function createRow(pos) {

    var newRow = document.getElementById('ghost').cloneNode(true);
    newRow.id= '';
    newRow.style.display= 'block';

    var value = newRow.querySelector("[name=VAL]");
    var button = newRow.querySelector("[name=DEL]");

    value.id = "VAL" + pos;
    value.value = pos;

    button.id = "DEL" + pos;

    var insertHere= document.getElementById('ghost');
    insertHere.parentNode.insertBefore(newRow, insertHere);

    button.addEventListener('click', delet);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

点击事件在Chrome扩展程序的“后台”页面中不起作用

来自分类Dev

点击处理程序在模板扩展指令中不起作用

来自分类Dev

Google Chrome扩展程序的选项页中的Javascript不起作用

来自分类Dev

“ this”在点击事件处理程序中不起作用

来自分类Dev

chrome扩展程序中的浏览器事件监听器不起作用

来自分类Dev

AngularJS路由在Chrome扩展程序中不起作用

来自分类Dev

jQuery click()在Google Chrome扩展程序中不起作用

来自分类Dev

getElementsByTagName在Chrome扩展程序中不起作用

来自分类Dev

处理js在Chrome扩展程序中不起作用

来自分类Dev

Chrome扩展程序中的Google Analytics(分析)不起作用

来自分类Dev

字体在Google Chrome扩展程序中不起作用

来自分类Dev

removeChild在Chrome扩展程序中不起作用

来自分类Dev

$(this) 在定义的点击事件中不起作用

来自分类Dev

选择选项,点击事件在 IE11 中不起作用

来自分类Dev

sendMessage 在 Chrome 扩展中不起作用

来自分类Dev

点击事件在Android 4.0.4下运行的Chrome中不起作用

来自分类Dev

Chrome中的OnClick事件不起作用

来自分类Dev

点击页面上的滚动在FF中有效,但在Chrome中不起作用

来自分类Dev

点击事件点击不起作用

来自分类Dev

为什么我的 Chrome 扩展事件不起作用?

来自分类Dev

chrome.runtime.sendMessage在Chrome扩展程序中不起作用

来自分类Dev

调用输入的点击事件在Safari中不起作用

来自分类Dev

标记点击事件在移动设备中不起作用

来自分类Dev

事件点击jquery在骨干.js中不起作用

来自分类Dev

按名称的点击事件在jQuery中不起作用

来自分类Dev

为什么点击事件在图例中不起作用?

来自分类Dev

简单的点击事件在 JS 中不起作用

来自分类Dev

Chrome扩展程序:为什么不起作用?

来自分类Dev

Chrome扩展程序后台脚本不起作用

Related 相关文章

  1. 1

    点击事件在Chrome扩展程序的“后台”页面中不起作用

  2. 2

    点击处理程序在模板扩展指令中不起作用

  3. 3

    Google Chrome扩展程序的选项页中的Javascript不起作用

  4. 4

    “ this”在点击事件处理程序中不起作用

  5. 5

    chrome扩展程序中的浏览器事件监听器不起作用

  6. 6

    AngularJS路由在Chrome扩展程序中不起作用

  7. 7

    jQuery click()在Google Chrome扩展程序中不起作用

  8. 8

    getElementsByTagName在Chrome扩展程序中不起作用

  9. 9

    处理js在Chrome扩展程序中不起作用

  10. 10

    Chrome扩展程序中的Google Analytics(分析)不起作用

  11. 11

    字体在Google Chrome扩展程序中不起作用

  12. 12

    removeChild在Chrome扩展程序中不起作用

  13. 13

    $(this) 在定义的点击事件中不起作用

  14. 14

    选择选项,点击事件在 IE11 中不起作用

  15. 15

    sendMessage 在 Chrome 扩展中不起作用

  16. 16

    点击事件在Android 4.0.4下运行的Chrome中不起作用

  17. 17

    Chrome中的OnClick事件不起作用

  18. 18

    点击页面上的滚动在FF中有效,但在Chrome中不起作用

  19. 19

    点击事件点击不起作用

  20. 20

    为什么我的 Chrome 扩展事件不起作用?

  21. 21

    chrome.runtime.sendMessage在Chrome扩展程序中不起作用

  22. 22

    调用输入的点击事件在Safari中不起作用

  23. 23

    标记点击事件在移动设备中不起作用

  24. 24

    事件点击jquery在骨干.js中不起作用

  25. 25

    按名称的点击事件在jQuery中不起作用

  26. 26

    为什么点击事件在图例中不起作用?

  27. 27

    简单的点击事件在 JS 中不起作用

  28. 28

    Chrome扩展程序:为什么不起作用?

  29. 29

    Chrome扩展程序后台脚本不起作用

热门标签

归档