2017-02-06 1 views
0

Ich habe eine Funktion in Javascript, die durch eine Tabelle von Links durchlaufen soll, um zu überprüfen, ob eine href leer ist. Wenn href leer ist, wird ein Textblock zwischen den Ankern hinzugefügt, um anzuzeigen, dass noch keine Verknüpfung hinzugefügt wurde. Der Code, den ich habe, ist unten:Suchen nach leeren "href" und Anhängen von Ankertext, wenn es leer ist

function isWorking(){ 
    //Variable declaration 
    var anchor, rows, i, link, x, y; 
    anchor = document.getElementById("myTable"); 
    rows = anchor.getElementsByTagName("TR"); 
    for(i = 0; i < (rows.length - 1); i++){ 
     x = rows[i].getElementsByTagName("A"); 
     link = x.getAttribute("href"); 
     y = link.getElementsByTagName("FONT")[0]; 
     if(link = ""){ 
      y.innerHTML += "<b><font color=red> (not added yet)</font></b>"; 
     } 
    } 
} 

Derzeit tut es wirklich nichts. Ich bin nicht sehr kompetent genug in Javascript, so habe ich eine wirklich harte Zeit zu verstehen, was muss geändert werden, damit dieser Code richtig funktioniert.

Edit: So, hier ist ein Beispiel für die Tabelle I in HTML verwenden bin:

<table id="myTable"> 
      <tr><td><a href="" target="_blank"><font size="4" color="white">C</a></font></td></tr> 
     <tr><td><a href="" target="_blank"><font size="4" color="white">A</a></font></td></tr> 
     <tr><td><a href="" target="_blank"><font size="4" color="white">B</a></font></td></tr> 
    </table> 

Im Beispiel I umfassen 3 leere Links (A, B und C). Da jeder Link href leer ist, möchte ich den Text mit einem Text in meinem if im Code anhängen.

+0

Alle Fehler in der Konsole? – brso05

+0

Überhaupt nicht. Deshalb bin ich so verwirrt. – skelk092

+1

'if (link =" ") {' sollte 'if (link ==" ") {' – brso05

Antwort

1

if(link = "") ungültig .. Sie definieren den Wert des = Operator. Es sollte if(link == "") sein .. Ihr Code kann auch minimiert werden - weiß nicht wirklich, wofür Sie die Tabelle und Zeilen definieren. Nur um den Link zu bekommen? Eine bessere Art:

var links = document.querySelectorAll('#mydiv a'), 
// gets all a links inside [mydiv] div... 
i, href; 

for(i = 0; i < links.length; i++) { 
    href = links[i].getAttribute('href'); 
    //check the length of href.. is it less than 1 or is a space 
    if(href.trim().length < 1) { 
    alert(i + ' is null: ' + href); 
    } 

} 

Here is a working example

+1

Für die Bedingung if (href.length <1 || href === '') wäre es nicht sinnvoller, wenn (href.trim(). Length <1)? Oder === 0 für diese Angelegenheit? – Mic

+0

@Mic ja eigentlich wäre das besser.Bearbeitet - ich bevorzuge weniger als Operator :) –

+0

Ihr Code ist so ziemlich was ich suche (nach ein paar kleinen Änderungen), aber aus irgendeinem Grund funktioniert es nicht mit IE. Weißt du, warum das sein könnte? – skelk092

-1

Ihnen fehlt der Operator == zum Vergleichen.

<input type=button id="links" text="Switch Mode" onclick="toggle_visibility()" class="" value="Check Link"> 
<br> 
<a id='not_null' href=""></a> 

function toggle_visibility() {  
     var x = document.getElementById('not_null'); 
     link = x.getAttribute("href"); 

     if (link =="")//Here you are missing 
     {   
     alert("true! This is null"); 
     }  

    } 
0

Unterhalb Linie hat Fehler

link = x.getAttribute("href"); 

x = rows[i].getElementsByTagName("A"); Diese Aussage eine Sammlung von Elementen zurückgibt. Um die Funktion getAttribute zu verwenden, sollten Sie sie wie folgt auf das Element anwenden:

if(x.length>0) 
link = x[0].getAttribute("href"); 

Ihre nächsten Anweisungen müssen entsprechend geändert werden. link.GetElementByTagName funktioniert nicht, da die Verknüpfung kein DOM-Element, sondern nur einen Zeichenfolgenwert enthält.

Sie können es here

0

schnell und einfach leben versuchen:

function checkTableHref() { 
     var elem = document.getElementsByTagName('a'); 
     for (i = 0; i < elem.length; i++) { 
      if (elem[i].getAttribute("href") == "") { 
       alert(null); 
      } 
      else { 
       alert("Not Null"); 
      } 
     } 
    }; 

und html:

<table id="myTable"> 
    <tr> 
     <td><a href="" target="_blank"><font size="4" color="white">C</a></font></td> 
    </tr> 
    <tr> 
     <td><a href="" target="_blank"><font size="4" color="white">A</a></font></td> 
    </tr> 
    <tr> 
     <td><a href="" target="_blank"><font size="4" color="white">B</a></font></td> 
    </tr> 
</table> 
Verwandte Themen