2009-12-30 21 views
5

प्राप्त करें शायद यह वास्तव में कुछ आसान है, लेकिन मैं बस सीख रहा हूं।जावास्क्रिप्ट टैग के लिए खोज करें और इसे आंतरिक HTML

इस पर 3 ब्लॉकक्वाट टैग वाले एक पृष्ठ हैं, और मुझे एक निश्चित स्ट्रिंग वाला एक आंतरिक HTML प्राप्त करने की आवश्यकता होगी। मुझे नहीं पता कि स्ट्रिंग को कैसे खोजें/मिलान करें और मिलान किए गए परिणाम वाले टैग के आंतरिक HTML को प्राप्त करें।

किसी भी मदद की सराहना की जाएगी!

उत्तर

7
var searchString = 'The stuff in innerHTML'; 
var elements = document.getElementsByTagName('blockquote') 
for (var i = 0; i < elements.length; i++) { 
    if (elements[i].innerHTML.indexOf(searchString) !== -1) { 
     alert('Match'); 
     break; 
    } 
} 

:)

बीटीडब्ल्यू बहुत अधिक होगा अच्छे विधि यदि आप Prorotype JS का उपयोग किया था (जो btw jQuery तुलना में काफी बेहतर है):

var el = $$('blockquote').find(function(el) { 
    return el.innerHTML.indexOf('The string you are looking for.') !== -1; 
}); 

आप निश्चित रूप से भी नियमित अभिव्यक्ति इस्तेमाल कर सकते हैं स्ट्रिंग, जो और अधिक उपयोगी हो सकता है (उपयोग el.match लगता है () उसके लिए)।

+0

यह केवल उस तत्व से मेल खाता है जो आंतरिक HTML है, बिल्कुल खोज स्ट्रिंग की तरह है, और वह वह नहीं है जो वह चाहता है (यदि आप पहले से स्ट्रिंग रखते हैं तो आप इसके लिए क्यों खोज करेंगे)? –

+0

हूप्स हाँ, ऐसा लगता है जैसे मैं असफल रहा: डी। इसे सही करने के लिए जा रहे हैं। – watain

+0

आप पिछले उदाहरण में सच/गलत लौट रहे हैं :) –

2

ब्लॉककोट तत्वों को एक ID निर्दिष्ट तो आप इस तरह innerHTML प्राप्त कर सकते हैं:

HTML:

<blockquote id="bq1">Foo</blockquote> 

जे एस:

var quote1 = document.getElementById('bq1').innerHTML; 
+1

यह मेरा पृष्ठ नहीं है, मैं एक आईडी असाइन नहीं कर सकता, लेकिन उत्तर के लिए धन्यवाद! :) –

5

आप पृष्ठ पर हर <blockquote> के माध्यम से खोज करने के लिए की जरूरत है, इस प्रयास करें:

function findBlockquoteContainingHtml(matchString) { 
    var blockquoteElements = document.getElementsByTagName('BLOCKQUOTE'); 
    var i; 
    for (i = 0; i < blockquoteElements.length; i++) { 
     if (blockquoteElements[i].innerHTML.indexOf(matchString) >= 0) { 
      return blockquoteElements[i].innerHTML; 
     } 
    } 
    return null; 
} 
+0

किसी कारण से मैं इसे काम नहीं कर सका (आखिरी जगह बदलने के बाद भी) –

2

, एक टैग के भीतर पाठ के लिए खोज करने के लिए innerHTML का उपयोग कर के रूप में सावधान रहें कि के रूप में भी गुण या टैग में पाठ के लिए खोज कर सकते हैं कुंआ।

आप का उपयोग करके सभी तत्वों पा सकते हैं:

var elems = document.getElementsByTagName("blockquote") 

तो आप अपने innerHTML के माध्यम से देख सकते हैं, लेकिन मैं बजाय अपने textContent/innerText (दुर्भाग्य से, यह ब्राउज़र भर में मानकीकृत नहीं है, ऐसा लगता है के माध्यम से देख सिफारिश करेंगे):

for (i in elems) { 
    var text = elems[i].textContent || elems[i].innerText; 
    if (text.match(/foo/)) { 
    alert(elems[i].innerHTML); 
    } 
}