if(ajaxRequest.readyState == 4)
{
var response = ajaxRequest.responseText;
response=response.split('^^--^^');
var buname=response[5].split('^^|||^^');
//rest code
}

Der folgende Code ist die Antwort auf meine oben erwähnte Ajax-Anfrage. Folgendes wird in der Variablen buname gespeichert. ** d.h. ** Buname enthält Folgendes:

<li rel="Particulier" onclick="javascript:tabledata('','buunits','3','single','','','','','','','');" style="height:16px">
        <a href="#">Particulier</a>
         -------------^
     </li>
<li rel="PLH" onclick="javascript:tabledata('','buunits','1','single','','','','','','','');" style="height:16px">
        <a href="#">PLH</a>
      ---------------^
     </li>

Was ich tun möchte:

Ich möchte die Werte des Ankertags in einer Javascript-Zeichenfolge oder einem Array abrufen.

Gewünschte Ausgabe : (Particulier, PLH)

Was ich bisher versucht habe : Aus einer der Antworten in SO habe ich den folgenden Code ausprobiert, aber dies funktioniert nicht, da in dem von mir angegebenen Code keine Klasse definiert ist.

var elems = document.querySelectorAll('.email');
for(var i = 0; i < elems.length; i++) {
    var elem = elems[i];
    alert(elem.firstChild.getAttribute('href').substr(7));
}

Ich benötige eine Javascript-Lösung. Bitte geben Sie keine JQuery-Lösung an.

Danke im Voraus.

0
R R 9 Dez. 2013 im 09:22

3 Antworten

Beste Antwort

Sie können querySelectorAll für ein einzelnes Element verwenden, nicht nur für ein Dokument:

var response = "<li rel=\"Particulier\" onclick=\"javascript:tabledata('','buunits','3','single','','','','','','','');\" style=\"height:16px\">\n        <a href=\"#\">Particulier</a>\n         -------------^\n     </li>\n<li rel=\"PLH\" onclick=\"javascript:tabledata('','buunits','1','single','','','','','','','');\" style=\"height:16px\">\n        <a href=\"#\">PLH</a>\n      </li>";
// skip the above in your normal environment, of course; here for example purposes :)
var ul = document.createElement("ul");
ul.innerHTML = response;
var links = ul.querySelectorAll("a");
// links now contains a list of the anchor tags, i.e. [<a href=​"#">​Particulier​</a>​, <a href=​"#">​PLH​</a>​]
var link_texts = [];
for (var i = 0; i < links.length; i++)
{
    link_texts.push(links[i].innerHTML);
}
// link_texts now contains the text inside the links, i.e. ["Particulier", "PLH"]
1
Collin Grady 9 Dez. 2013 im 06:01

Dies scheint es zu tun.

HTML

<li rel="Particulier" onclick="javascript:tabledata('','buunits','3','single','','','','','','','');" style="height:16px">
        <a href="#">Particulier</a>
     </li>
<li rel="PLH" onclick="javascript:tabledata('','buunits','1','single','','','','','','','');" style="height:16px">
        <a href="#">PLH</a>
     </li>

<br/>
<button onclick="getAnchorText();">Get Text</button>

Javascript

function getAnchorText() {
    var elems = document.querySelectorAll('a');
    for(var i = 0; i < elems.length; i++) {
        var elem = elems[i];
        alert(elem.innerHTML);
    }
}

Demo in dieser Geige: http://jsfiddle.net/gtZz5/

Hinweis: Dadurch wird der Ankertextinhalt abgerufen, nach dem Ihre ursprüngliche Frage gefragt hat (nicht der Wert rel).

1
Marc 9 Dez. 2013 im 05:41

querySelectorAll funktioniert nicht mit Elementen, die nicht an DOM angehängt sind. Fügen Sie es daher mit display:none hinzu und entfernen Sie es später.

 var html = "yourHTML data recieved",
     div = document.createElement('div');
 div.innerHTML = html;
 div.cssText = "display:none";
 document.body.appendChild(div);
 var elements = div.querySelectorAll('li a'), arr = [];
 for(var i = 0, l = elements.length; i< l; i++){
     var ele = elements[i];
     arr.push(ele.innerText || ele.textContent);
 }
 div.parentNode.removeChild(div);

Demo

1
redV 9 Dez. 2013 im 06:13