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

以下代码是我上面提到的ajax请求的响应。 以下内容存储在变量buname中。 ** buname包含以下内容:如何在未定义类时从ajax响应中获取锚点标记值

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

我想要做什么:

我想在一个JavaScript字符串或数组锚变量的值。

所需的输出:(Particulier,PLH)

我试过到目前为止:从SO答案我想下面的代码中的一个,但是这是行不通的,因为我没有任何在我给出的代码中定义的类。

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

我需要javascript解决方案,请不要给jQuery解决方案。

在此先感谢。

+0

你能不能只是做一个'document.querySelectorAll( 'A');'?或者你有其他的锚标签,以避免?如果还有其他的锚标签,目标锚是否包裹在自己的DIV中? – Marc

+0

如果我正确地理解了你的问题,你只有一个字符串。如果是这样,你可以[创建](https://developer.mozilla.org/en-US/docs/Web/API/document.createElement)一个临时的'ul'元素并使用['getElementsByTagName()'](https ://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByTagName)。从返回的集合中,您可以读取“textContent”。 – Teemu

+0

@Marc感谢reply.no我没有其他锚标签照顾,我只是想从上面提到的ajax响应获得锚点或相对值。 –

回答

1

你可以一个单独的元素,而不仅仅是文件上使用querySelectorAll:

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"] 
+0

感谢您的答案。我测试你的答案在我的实际代码中,你会在几分钟内知道。 –

+0

'querySelectorAll'如何在不将'ul'附加到'DOM'的情况下工作? – redV

+0

它只是吗?我在Chrome的开发控制台中测试了它,它工作正常。也可以在Firefox控制台中使用。 –

1

希望这将解决您的问题
var elems = document.querySelectorAll('.email').getElementsByTagName("a"); for(var i = 0; i < elems.length; i++) { var elem = elems[i]; alert(elem.getAttribute('href').substr(7));}

+1

我没有任何类名为电子邮件,这个解决方案只有我在我的问题中提到 –

+0

var elems = document.querySelectorAll('UL')。getElementsByTagName(“a”); for(var i = 0; i Kamlesh

+0

感谢您的答案kamlesh,但我想我得到了最优化的answer.but再次感谢:) –

1

querySelectorAll不上未附加到DOM元素的工作,所以用display:none增加,稍后再删除它。

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

+0

感谢您的reply.is您的答案有效时,ajax响应存储在像我在我的问题中提到的变量一样响应? –

+0

是的,您只需在上面的代码中将'html'变量存储在'html'变量中。休息一下它会保重。 – redV

+0

但这(jsfiddle)不是我想要的输出,我希望他们在一个字符串或一个数组中,也只有一个锚值被提取,而不是其他 –

1

这似乎做到这一点。

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); 
    } 
} 

演示这个小提琴:http://jsfiddle.net/gtZz5/

注:该得到的锚文本的内容,这是你的原问题a sked为(不是rel值)。

+0

谢谢你的reply.is你的答案有效,当我的问题中提到的ajax响应存储在变量,如响应? –

+0

试一试。我想我没有考虑过ajax方面。您可能需要将元素添加到页面,如@ redv的答案所示。 – Marc

+0

我正在尝试,并会在几分钟之内让你知道。 –