2012-01-03 26 views
52

querySelector veya querySelectorAll kullanarak joker eleman adı maçı yapmak için bir yolu var mı? Özellik sorgularında joker karakterlere destek görüyorum ancak öğelerin kendileri için değil.querySelector, joker karakter eşleşmesi?

ben ayrıştırmak çalışıyorum XML dokümanı temelde özelliklerin düz liste ve ben adlarında belirli dizeleri var unsurları bulmak gerekir.

ben o ama bu sadece ne olacak değil gerekirse XML dokümanı bir yeniden yapılanma ihtiyacı muhtemelen farkında.

geri görünüşte kaldırıldı XPath (IE9 düştü) kullanılarak giderek dışında herhangi bir çözelti kabul edilir.

+0

"name" ile etiket adı nedir? – kennytm

+1

Ne yazık ki evet –

+0

@ JaredMcAteer'in cevabı cevap olarak kabul edilmeye değer. Düşünün lütfen. – RBT

cevap

144

[id^='someId']someId ile başlayan tüm kimlikleri eşleşir.

[id$='someId']someId ile biten bütün kimlikleri eşleşir.

[id*='someId']someId içeren tüm kimlikleri eşleşir. Eğer name özellik için arıyorsanız

sadece name ile id yerine.

for(var i=0,els=document.querySelectorAll('*'); i<els.length; 
      els[i].setAttribute('tagName',els[i++].tagName)); 

Ben kendimi bu gerekli:

ben querySelector

+3

Teşekkürler, etiket adını kastediyorum. –

+0

bu ie8 + ??? – SuperUberDuper

+0

hmm Ben document.querySelectorAll yapamıyorum ("div. [Id $ = 'foo']") – SuperUberDuper

5

açık bir niteliği olarak etiketadı Set kullanarak bir yolu yoktur inanmıyorum öğesinin etiket adı bahsediyorsan , bir XML Belgesi için, _Sequence ile biten Yuvalanmış Etiketler. Daha fazla ayrıntı için JaredMcAteer yanıta bakın.

document.querySelectorAll('[tagName$="_Sequence"]') 

öyle olacağını söylemedi oldukça :) PS: Ben tagName üzerinde tag_name kullanmak öneriyoruz, böylece 'bilgisayar oluşturulan', örtülü DOM niteliklerini okurken müdahaleler içine kaçma.

4

Ben &, & MY soruya cevap için @JaredMcAteer kredilerin ile etiket adlarını & querySelector() kullanarak OP soruya olası bir cevap burada bitti querySelector() içeren tek gömlekleri musing/karıştırmasını, namı aşağıdaki & OP'ın ihtiyaçları veya herkesin uyması yararlı olacaktır umuduyla vanilya Javascript

yılında querySelector() ile RegEx benzeri eşleşmesi var:

// basically, of before: 
var youtubeDiv = document.querySelector('iframe[src="http://www.youtube.com/embed/Jk5lTqQzoKA"]') 

// after  
var youtubeDiv = document.querySelector('iframe[src^="http://www.youtube.com"]'); 
// or even, for my needs 
var youtubeDiv = document.querySelector('iframe[src*="youtube"]'); 

Sonra, örneğin, src şeyler alabilirsiniz , vb ...

console.log(youtubeDiv.src); 
//> "http://www.youtube.com/embed/Jk5lTqQzoKA" 
console.debug(youtubeDiv); 
//> (...) 

+

-7

Bu benim için çalışıyor:

NSString *nameInWeb = [NSMutableString stringWithFormat:@"document.querySelector('[name$=\"057\"]').name"]; 

"057" nereye biten bütün isimleri göster.

+0

Hangi programlama dili bu ?! Bu bir JavaScript ** sorusu –

+0

Bu, Objective C değil, JavaScript değil – vonox7

1

Bu kısa senaryoyu yeni yazdım; çalışıyor gibi görünüyor.

/** 
* Find all the elements with a tagName that matches. 
* @param {RegExp} regEx regular expression to match against tagName 
* @returns {Array}  elements in the DOM that match 
*/ 
function getAllTagMatches(regEx) { 
    return Array.prototype.slice.call(document.querySelectorAll('*')).filter(function (el) { 
    return el.tagName.match(regEx); 
    }); 
} 
getAllTagMatches(/^di/i); // Returns an array of all elements that begin with "di", eg "div" 
İlgili konular