TypeError:document.getElementById(...)。getElementsByTagName(...)。click不是函数

时间:2016-04-21 01:38:33

标签: javascript asp.net-mvc razor onkeydown

Origin source

<script>
    document.addEventListener('keydown', function (e) {
        // 37 is left arrow, 39 is right arrow
        if (e.which === 37) {
            document.getElementById('previousPhoto').getElementsByTagName('a').click();
        } else if (e.which === 39) {
            document.getElementById('nextPhoto').getElementsByTagName('a').click();
        }
    });
</script>

生成一个错误,我把它放在上面的标题上。

P.S。有这些链接。鼠标单击时工作正常。

2 个答案:

答案 0 :(得分:2)

getElementsByTagName获取一个nodeList,一个包含所有匹配元素的数组列表。

如果你想要该集合中的第一个元素,你可以使用[0]等访问它。

document.getElementById('previousPhoto').getElementsByTagName('a')[0].click();

对于IE8及更高版本,querySelector / querySelectorAll也可用

document.querySelector("#previousPhoto a").click()

答案 1 :(得分:0)

您正在处理节点数组并尝试单击它。您必须使用索引来访问特定元素,然后单击。

document.getElementById('previousPhoto').getElementsByTagName('a'[0]).click();

获取元素previousPhoto的子锚标记的另一种方法是querySelector

document.querySelectorAll('#previousPhoto a')[0].click()