如果页面上没有元素,为什么JavaScript会引发错误?

q

我的情况是我有一个JS文件,该文件正在两个HTML页面上使用。一个有一个buttonid="a"另一个没有。id="a"为此,我已经附加了一个事件

document.getElementbyId("a").onclick = function () { .. }

我的问题是,当我运行不button带with的第二个文件id="a",它引发了错误

TypeError: document.getElementbyId(...) is null

这会导致一些意外行为!有什么方法可以仅使用一个JS文件,还是应该为每个html页面分离JS文件?

我在这里阅读有关StackOverflow的问题,这是关于为什么选择器无效时jQuery不会引发错误的问题。我需要香草JavaScript具有相同或相似的功能。

太平

简单的解决方法是添加检查:

if (document.getElementById("a") !== null) {
    document.getElementById("a").onclick = function () /* .. */ };
}

jQuery永远不会因缺少元素而中断,只是默默地失败。您可以争论这是否好。

jQuery使用的技巧是它将始终返回某些内容。$("#id")将返回一个jQuery包装器。该包装器具有.on.load和的功能.html选择器可以匹配一个,多个或没有任何元素。对于包装器,匹配多少个元素无关紧要。

它是这样的:

var elem = get_element("a");
elem.onclick(callback);

function get_element(id) {
    var elem = document.getElementById(id);
    return { // return a wrapper
        onclick: function (callback) {
            if (elem !== null) {
                elem.onclick = callback;
            } else {
                // silently fail
            }
        }
    };
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果我没有在nil上执行代码,为什么Rails会引发错误

来自分类Dev

为什么流程不执行,没有引发错误?

来自分类Dev

如果我拥有合法的密码,那么为什么SQL会引发错误,所以永远无法实现?

来自分类Dev

为什么排他运算符没有包含范围运算符会引发错误?

来自分类Dev

如果过了日期(即20/04/2020),为什么程序会引发错误?

来自分类Dev

为什么页面上没有div元素?

来自分类Dev

为什么某些页面上没有打印元素?

来自分类Dev

为什么此Java转换会引发错误?

来自分类Dev

Numpy / Scipy:为什么会引发错误

来自分类Dev

为什么docker-compose会引发错误?

来自分类Dev

为什么这个简单的LISP函数会引发错误?

来自分类Dev

为什么编写正确的输入大写会引发错误?

来自分类Dev

为什么不重复的ID会引发错误?

来自分类Dev

Fancytree lazyload:为什么空结果会引发错误?

来自分类Dev

为什么即使成功,我的脚本也会引发错误?

来自分类Dev

为什么不提交此表格会引发错误?

来自分类Dev

为什么这个 Python 代码会引发错误?

来自分类Dev

在Ember.js中,如果将路线的路径设置为{path:'/'},为什么会引发错误?

来自分类Dev

有时JavaScript代码块会引发错误

来自分类Dev

为什么n会引发错误?错误:需要sudo(或更改所有权或定义N_PREFIX)

来自分类Dev

为什么读取属性有时会在javascript中引发错误?

来自分类Dev

为什么读取属性有时会在javascript中引发错误?

来自分类Dev

当我尝试查找每行具有最大值的列名时,为什么`idxmax`会引发错误?

来自分类Dev

尽管所有“if”都已正确关闭,但为什么 mysql workbench 8.0 会因未关闭 if 而引发错误?

来自分类Dev

预期打字稿tsc会引发错误,但没有引发

来自分类Dev

如果return和{之间有换行符,JS为什么会引发语法错误

来自分类Dev

如果return和{之间有换行符,为什么JS会引发语法错误

来自分类Dev

为什么++ []会引发错误,但是++ [[]] [0]会产生1?

来自分类Dev

如果在HTML元素后插入换行符,tinymce 5会引发错误

Related 相关文章

  1. 1

    如果我没有在nil上执行代码,为什么Rails会引发错误

  2. 2

    为什么流程不执行,没有引发错误?

  3. 3

    如果我拥有合法的密码,那么为什么SQL会引发错误,所以永远无法实现?

  4. 4

    为什么排他运算符没有包含范围运算符会引发错误?

  5. 5

    如果过了日期(即20/04/2020),为什么程序会引发错误?

  6. 6

    为什么页面上没有div元素?

  7. 7

    为什么某些页面上没有打印元素?

  8. 8

    为什么此Java转换会引发错误?

  9. 9

    Numpy / Scipy:为什么会引发错误

  10. 10

    为什么docker-compose会引发错误?

  11. 11

    为什么这个简单的LISP函数会引发错误?

  12. 12

    为什么编写正确的输入大写会引发错误?

  13. 13

    为什么不重复的ID会引发错误?

  14. 14

    Fancytree lazyload:为什么空结果会引发错误?

  15. 15

    为什么即使成功,我的脚本也会引发错误?

  16. 16

    为什么不提交此表格会引发错误?

  17. 17

    为什么这个 Python 代码会引发错误?

  18. 18

    在Ember.js中,如果将路线的路径设置为{path:'/'},为什么会引发错误?

  19. 19

    有时JavaScript代码块会引发错误

  20. 20

    为什么n会引发错误?错误:需要sudo(或更改所有权或定义N_PREFIX)

  21. 21

    为什么读取属性有时会在javascript中引发错误?

  22. 22

    为什么读取属性有时会在javascript中引发错误?

  23. 23

    当我尝试查找每行具有最大值的列名时,为什么`idxmax`会引发错误?

  24. 24

    尽管所有“if”都已正确关闭,但为什么 mysql workbench 8.0 会因未关闭 if 而引发错误?

  25. 25

    预期打字稿tsc会引发错误,但没有引发

  26. 26

    如果return和{之间有换行符,JS为什么会引发语法错误

  27. 27

    如果return和{之间有换行符,为什么JS会引发语法错误

  28. 28

    为什么++ []会引发错误,但是++ [[]] [0]会产生1?

  29. 29

    如果在HTML元素后插入换行符,tinymce 5会引发错误

热门标签

归档