2016-04-21 16 views
-1

Origin sourceTypeerror:.. Document.getElementById (...) getElementsByTagName (...) klicken ist keine Funktion

<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> 

einen Fehler erzeugt, die ich oben auf den Titel setzen.

P.S. Da sind diese Links. Perfekt funktioniert, wenn ich mit der Maus klicke.

+0

'.getElementsByTagName()' gibt eine Auflistung von Elementen verwenden können, um zu bekommen, und es muss nicht eine '.click()' Methode. Sie könnten eine Schleife verwenden oder einfach die eine am Index '[0]' nehmen, aber es ist sauberer, wenn Sie stattdessen 'querySelector' verwenden. 'document.querySelector (" # previousPhoto a "). click()' –

Antwort

2

getElementsByTagName Ruft eine nodeList, eine Array-ähnliche Liste aller übereinstimmenden Elemente.

Wenn Sie das erste Element in dieser Sammlung wollen, sollten Sie darauf zugreifen mit [0] usw.

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

Für IE8 und oben, querySelector/querySelectorAll verfügbar ist auch

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

thx. das ist die Lösung! – 52hertz

0

Sie beschäftigen sich mit einem Array von Knoten und versuchen, darauf zu klicken. Sie müssen den Index verwenden, um auf das spezifische Element zuzugreifen, und dann auf klicken.

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

Ein anderer Weg, um die Kinder Anker-Tags des Elements previousPhoto Sie querySelector

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