2012-01-03 15 views
52

क्या querySelector या querySelectorAll का उपयोग कर वाइल्डकार्ड तत्व नाम मिलान करने का कोई तरीका है? मैं विशेषता प्रश्नों में वाइल्डकार्ड के लिए समर्थन देखता हूं लेकिन तत्वों के लिए नहीं।क्वेरी चयनकर्ता, वाइल्डकार्ड तत्व मिलान?

एक्सएमएल दस्तावेज़ जो मैं पार्स करने की कोशिश कर रहा हूं वह मूल रूप से गुणों की एक विस्तृत सूची है और मुझे उन तत्वों को ढूंढने की आवश्यकता है जिनके नाम उनके कुछ तार हैं।

मुझे एहसास है कि एक्सएमएल दस्तावेज शायद मुझे पुनर्गठन की ज़रूरत है यदि मुझे इसकी ज़रूरत है लेकिन यह अभी नहीं होने वाला है।

जाहिर तौर पर बहिष्कृत XPath (IE9 इसे छोड़कर) का उपयोग करने के अलावा वापस जाने के अलावा कोई समाधान स्वीकार्य है।

+0

"नाम" से आपका नाम टैग का मतलब है? – kennytm

+1

दुर्भाग्य से हाँ –

+0

@ जेरेडएमसीएटर का जवाब उत्तर के रूप में स्वीकार करने के योग्य है। कृपया ध्यान रखें। – RBT

उत्तर

144

[id^='someId']someId से शुरू होने वाली सभी आईडी से मेल खाएगा।

[id$='someId']someId के साथ समाप्त होने वाली सभी आईडी से मेल खाएगा।

[id*='someId']someId युक्त सभी आईडी से मेल खाएगा।

यदि आप name विशेषता की तलाश में हैं तो idname के साथ बस विकल्प।

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

मैं अपने आप को इस की जरूरत:

आप तत्व मैं नहीं मानता कि वहाँ का उपयोग कर querySelector

+3

धन्यवाद, मेरा मतलब टैग नाम था। –

+0

यह यानी 8 + ??? – SuperUberDuper

+0

हम्म मैं दस्तावेज़ नहीं कर सकता .querySelectorAll ("div। [Id $ = 'foo']") – SuperUberDuper

5

एक स्पष्ट विशेषता के रूप में टैगनाम सेट एक तरीका है की टैग नाम के बारे में बात कर रहे हैं , एक XML दस्तावेज़ के लिए, _Sequence में समाप्त नेस्टेड टैग के साथ। अधिक जानकारी के लिए JaredMcAteer उत्तर देखें।

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

मैंने ऐसा नहीं कहा यह होगा बहुत :) पुनश्च: मैं टैगनाम से अधिक tag_name उपयोग करने के लिए सिफारिश करेंगे, इसलिए जब पढ़ने 'कंप्यूटर जनित', अंतर्निहित डोम विशेषताओं के हस्तक्षेप में चलाने नहीं है।

4

मैं खिलवाड़ किया गया था/querySelector() को शामिल & यहां समाप्त हुए, &, टैग नाम & querySelector() का उपयोग कर क्रेडिट के साथ ओपी प्रश्न के संभावित जवाब मेरे सवाल का जवाब देने के लिए @JaredMcAteer करने के लिए है एक-लाइनर्स पर सोच, उर्फ वेनिला जावास्क्रिप्ट

में querySelector() के साथ रेगुलर एक्सप्रेशन से की तरह मैच आशा निम्नलिखित उपयोगी & ओपी की जरूरतों या हर किसी के लिए फिट हो जाएगा:

// 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"]'); 

फिर, हम, उदाहरण के लिए, स्रोत सामग्री प्राप्त कर सकते , आदि ...

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

+

-7

यह मेरे लिए काम करता है:

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

"057" whith न खत्म होने वाली सभी नाम दिखाएं।

+0

वह प्रोग्रामिंग भाषा क्या है ?! यह एक ** जावास्क्रिप्ट ** प्रश्न –

+0

है यह उद्देश्य सी है, जावास्क्रिप्ट नहीं – vonox7

1

मैंने अभी इस छोटी लिपि को लिखा है; काम करने लगता है।

/** 
* 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" 
संबंधित मुद्दे