查找输入元素,但只查找具有onclick事件的输入元素

时间:2018-02-17 00:03:30

标签: javascript html getelementsbytagname

我的一些输入元素有onclick =" setSomeFunction()"显示或隐藏以下几个div。

我可以通过找到输入元素 document.getElementsByTagName("输入&#34) 并把它们放在一个数组中。 但我想只获得" onclick"输入另一个数组。

我发现你可以测试.class,(例如)

if (document.getElementById("someId").class == "block" ) 

但似乎没有相应的" .onclick"?或者我的代码是否因为某些输入元素根本没有onclick事件而失败?

function consoleInputs() {
    var inputs = document.getElementsByTagName("input"); //finds all the input elements
    console.log(inputs); //list all the inputs
    var hasClick; // store all the inputs WITH onclick event here
    var loop = inputs.length; // max rounds in the loop
    var i;
    for (i = 0;i <= loop ;i += 1){
        if ((document.getElementById("inputs[i]").onclick) == ("set"+"*")) {
        hasClick = hasClick + inputs[i]
        }
    }
    console.log(hasClick);
}

我尝试了不同的if语句,但没有运气,真的......我一直在收到错误

  

未捕获的TypeError:无法读取属性&#39; onclick&#39;为null

我还没有充分了解jQuery,所以请避免。

1 个答案:

答案 0 :(得分:2)

JavaScript具有与jQuery非常相似的选择器功能。

因此,您可以通过

获取具有onClick属性的所有输入
document.querySelectorAll('input[onClick]')

将返回已定义onClick属性的输入元素数组。

修改

CSS还有startsWith选择器,因此您可以使用此

获取以set开头的onclick属性

document.querySelectorAll('input[onClick^="set"]')