2015-06-10 3 views
0

В этом XML:Выберите узел, который имеет определенное значение атрибута в JavaScript

<elements> 
     <product id="1"> 
       <brand>xxxxxxx</brand> 
       <dci>xxxxx</dci> 
       <therapeutic_area>xxxxxx</therapeutic_area> 
     </product> 
     <product id="2"> 
       <brand>xxxxxx</brand> 
       <dci>xxxx</dci> 
       <therapeutic_area>xxxx</therapeutic_area> 
     </product> 
     <product id="3"> 
       <brand>xxx</brand> 
       <dci>xxxx</dci> 
       <therapeutic_area>xxxxx</therapeutic_area> 
     </product> 

нужно выбрать узел, который имеет определенное значение атрибута. Например 2

Я попытался это, но он не работает:

alert(xmlDoc.getElementsByTagName("product")[0].getAttributeNode("2")); 

Заранее спасибо за помощь

+0

Вы пропустили '' путем разбора там или он отсутствует в XML-файле? – briosheje

+0

Нет, я просто забыл скопировать/вставить его в код выше, извините – FieryA

ответ

1

Попробуйте как этот

var list=xmlDoc.getElementsByTagName("product"); 
for (i=0;i<list.length;i++) 
{ 
    if(list[i].getAttribute("id")==2){ 
     // Found your node 
    } 
} 
+0

Спасибо большое за вашу помощь – FieryA

+0

приветствую :) –

1
var xmlfile = "<elements><product id=\"1\"><brand>xxxxxxx</brand><dci>xxxxx</dci><therapeutic_area>xxxxxx</therapeutic_area></product><product id=\"2\"><brand>xxxxxx</brand><dci>xxxx</dci><therapeutic_area>xxxx</therapeutic_area></product><product id=\"3\"><brand>xxx</brand><dci>xxxx</dci><therapeutic_area>xxxxx</therapeutic_area></product></elements>"; 

var parser = new DOMParser(); 

xmlDocument = parser.parseFromString(xmlfile,"text/xml"); 

var products = xmlDocument.getElementsByTagName("product"); 

for (var i = 0; i < products.length; ++i) { 
    if (products[i].getAttribute("id") == 2) { 
     // product id is 2. 
    } 
} 

http://jsfiddle.net/dvgLhw66/ < - - рабочая скрипка.

Вы используете неправильный прототип. getAttributeNode не существует, вы ищете getAttribute.

1
var node = xmlDoc.getElementsByTagName("product"); 
for (var index in node) { 
    if (node[index].getAttribute("id") == "2") { 
     alert(); 
    } 
} 
0

Я действительно не понимаю, что вы пытаетесь сделать здесь, но попробуйте что-то вроде этого.

alert(document.querySelector("[id='2']").querySelector('brand')); 

см. querySelector.

Смежные вопросы