2013-12-09 26 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

我正在嘗試,並會在幾分鐘之內讓你知道。 –