JavaScript If-Schleife Fehler finden

E

Ehemaliger Benutzer

Gast
Kann sich mal jemand die Schleifen ansehen und mir sagen, warum es nicht geht?
Das Problem liegt an der innersten If-Schleife. Ich möchte den Inhalt eines Array-Elements auf einen String überprüfen. Aber das Skript bricht an der Stelle ab. Nehme ich die Schleife raus, geht alles.

PHP:
var links = document.getElementsByTagName("a");

if(links.length > 0) {
    //sonst wird auch mal 0 ausgegeben
    for(var i = 0; i < 5; ++i) {
        if(links[i] != "") {
            if(links[i].match(/your.+/) != -1) {
                alert(links[i]);
            }
            else {
                alert("war nix");
            }
        }
    }
}

Wer kann mir den Fehler nennen und mir sagen, wie es richtig geht?
 
hab zwar überhaupt keinen Plan von Java Script, hab mich aber trotzdem mal versucht mit dem Ergebnis, dass ich dein Problem nicht nachvollziehen kann ... die alert-Boxen kommen (fast) korrekt. Nur fast weil bei Array-Elementen die nicht dem RexEx-Pattern entsprachen trotzdem der Link ausgegeben wurde ... hier ist das "!= -1" verkehrt.

Hier mal mein Test mit korrigiertem If:
PHP:
<html><head><script type="text/javascript">

var links = new Array("yours1", "abc", "yours2", "xyz", "yours3");

if(links.length > 0) {
    //sonst wird auch mal 0 ausgegeben
    for(var i = 0; i < 5; ++i) {
        if(links[i] != "") {
            if(links[i].match(/your.+/)) {
                alert(links[i]);
            }
            else {
                alert("war nix");
            }
        }
    }
}  

</script></head><body></body></html>

also entweder war das der Fehler, oder es gibt schon bei document.getElementsByTagName("a") Probleme
 
  • Like
Reaktionen: 1 Person
Beides falsch.
PHP:
if(links[i].innerHTML.match(/your.+/) != -1)
ist die Lösung.
Das mit dem "!= -1" stört ihn gar nicht, läuft wie geschmiert.
 
also lag es doch am Array ... deine Variante mit "!= -1" funktioniert bei mir übrigens im Firefox definitiv nicht, kann sein dass match() je nach Browserengine andere Ergebnisse liefert ... falls du das online stellen willst, solltest du eventuell eine Variante wählen die browserübergreifend funktioniert