2012-03-09 15 views
19

मैं कैसे जांच सकता हूं कि एक div में एक निश्चित शब्द है या नहीं?जावास्क्रिप्ट - जांचें कि क्या div में कोई शब्द है?

var divs= document.getElementsByTagName('div'); 
for (var i = 0, len = divs.length; i < len; ++i) { 

    if (divs[i].text = '*word*'){ 
    //do somthing 
} 
} 

काम नहीं करता है। if (divs[i].text.indexOf('word') != -1) {

उत्तर

1

String.indexOf() समारोह की कोशिश करो।

if (divs[i].text == '*word*'){ 

मैं indexOf का उपयोग करने की सलाह दूंगा।

if (divs[i].text.indexOf('*word*') != -1){ 
1

आप एक तुलना ऑपरेटर का उपयोग करने के लिए एक चर आवंटित नहीं है:

29

if(divs[i].innerHTML.indexOf("word") !== -1) { 
    // something 
} 
+0

// divs [i] .style.background = "red" के साथ // कुछ बदलना; अभी भी पूरे पृष्ठ पर प्रकाश डाला गया है। "शब्द" युक्त div के संदर्भ कैसे प्राप्त करें? अनुमोदित, सवाल उस गहराई के लिए नहीं पूछता है लेकिन पूर्णता/जिज्ञासा के लिए यह दिलचस्प होगा। – TenLeftFingers

0

उपयोग regexp का उपयोग indexOf समारोह:

if (divs[i].textContent.match (/\bword\b/)){ 
    //do something 
} 

मुझे याद दिलाने @RobG तो

if (divs[i].innerHTML.match (/\bword\b/)){ 
    //do something 
} 

= 3 =

+0

उन ब्राउज़रों में काम नहीं करेगा जो W3C DOM * textContent * प्रॉपर्टी का समर्थन नहीं करते हैं। – RobG

1

.indexOf() फ़ंक्शन का उपयोग करने के बारे में अन्य लोगों के अलावा, मैं कहना चाहता हूं कि .text एक div नोड संपत्ति नहीं है। उपयोगकर्ता .innerHTML

if (divs[i].innerHTML.indexOf('word') > -1){} 
+0

जो HTML टैग सामग्री से भी मेल खाएगा (यानी टैग नाम और विशेषता नाम और मान)। – RobG

+0

यह निर्दिष्ट नहीं किया गया था कि वह किस प्रकार की सामग्री की तलाश में था। –

+1

मैं गलत हो सकता हूं, लेकिन मुझे लगता है कि यह स्पष्ट है कि ओपी टेक्स्ट सामग्री से मिलान करने की तलाश में था, मार्कअप नहीं। – RobG

1

गोश, इतने सारे उत्तर!

सिर्फ एक तत्व के पाठ पाने के लिए, आसान तरीका textContent या, जहां समर्थित नहीं, innerText उपयोग करने के लिए है। उपयोग में सभी ब्राउज़र एक या दूसरे (शायद दोनों) का समर्थन करते हैं। तुम भी तो रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं (indexOf भी काम करता है, एक रेगुलर एक्सप्रेशन सिर्फ एक विकल्प है):

var re = new RegExp('*' + word + '*'); 

if (re.test(div[i].innerText || div[i].textContent)) { 
    // div[i] contains /*word*/ 
} 

एक और अधिक मजबूत समाधान जैसा होगा:

function getText(el) { 
    if (typeof el.textContent == 'string') { 
    return el.textContent; 
    } 
    if (typeof el.innerText == 'string') { 
    return el.innerText; 
    } 
} 

var re = new RegExp('*' + word + '*'); 

if (re.test(getText(div[i]))) { 
    // div[i] contains /*word*/ 
} 
3
if (document.getElementById('divId').innerHTML.indexOf("word") != -1) { } 
2

उपयोग includes():

node.textContent.includes('Some text'); 
संबंधित मुद्दे