Modifica di tutti i link esterni con javascript

Come posso passare attraverso tutti i link esterni in un div con javascript, aggiungendo (o aggiungendo) una class e un alt-text?

Credo di aver bisogno di recuperare tutti gli oggetti all’interno dell’elemento div, quindi controllare se ogni object è un, e controllare se l’attributo href inizia con http (s): // (dovrebbe quindi essere un collegamento esterno), quindi aggiungere il contenuto al attributo alt e class (se non esistono, creali, se esistono, aggiungi i valori desiderati).

Ma come faccio a farlo nel codice?

Questo è testato:

   

Se sei su un account su un server condiviso, come http://big-server.com/~UserName/ , potresti voler codificare l'URL per andare oltre il livello principale. D'altra parte, potresti voler modificare la RE se vuoi http://foo.my-server.com e http://bar.my-server.com contrassegnati come locali.

[AGGIORNAMENTO] Migliorata robustezza dopo le buone osservazioni ...
Non evidenzi FTP o altri protocolli, probabilmente meritano una routine distinta.

Penso che qualcosa del genere potrebbe essere un punto di partenza:

 var links = document.getElementsByTagName("a"); //use div object here instead of document for (var i=0; i 

puoi anche scorrere tutti gli elementi A nel documento e controllare il genitore per vedere se il div è quello che stai cercando

Questo può essere fatto abbastanza facilmente con Jquery . Dovresti aggiungere questo al carico:

 $("div a[href^='http']").each(function() { $(this).attr("alt",altText); var oldClassAttributeValue = $(this).attr("class"); if(!oldClassAttributeValue) { $(this).attr("class",newClassAttributeValue); } }); 

È ansible modificare questo per aggiungere del testo. La class può anche essere modificata usando la funzione css .

Il mio approccio (non quadro) sarebbe qualcosa sulla falsariga di:

 window.onload = function(){ targetDiv = document.getElementById("divName"); linksArray = targetDiv.getElementsByTagName("a"); for(i=0;i=linksArray.length;i++){ thisLink = linksArray[i].href; if(thisLink.substring(4,0) = "http"){ linksArray[i].className += "yourcontent"; //you said append so += linksArray[i].alt += "yourcontent"; } } } 

Questo non è testato ma vorrei iniziare così e debuggarlo da qui.