2012-02-24 14 views
40

शुद्ध जावास्क्रिप्ट पर कक्षा के नाम से सभी तत्व कैसे प्राप्त करें? Jquery में एनालॉग $ ('वर्ग')?कक्षा के नाम से सभी तत्व कैसे प्राप्त करें?

+0

http://stackoverflow.com/questions/1933602/how-to-getelementbyclass-instead-of-getelementbyid-with-javascript – silly

उत्तर

46

document.getElementsByClassName(klass)

पता है कि कुछ इंजन (विशेष रूप से पुराने ब्राउज़र) यह नहीं है हो सकता है। यदि मामला है तो आप एक शिम का उपयोग करने पर विचार कर सकते हैं। यह धीमा हो जाएगा, और पूरे दस्तावेज़ पर फिर से शुरू होगा, लेकिन यह काम करेगा।

1

some browsers में document.getElementsByClassName(class) फ़ंक्शन है। अन्यथा, आपके पास एकमात्र विकल्प है जो आवश्यक वर्ग नाम रखने की आपकी स्थिति के विरुद्ध प्रत्येक की जांच करके दस्तावेज़ में सभी तत्वों को पुन: सक्रिय करना है।

15
document.getElementsByClassName('your class'); 

या आप, इस तरह से अपनी classname निर्माण है कि अगर यह

if (!document.getElementsByClassName) { 
    document.getElementsByClassName=function(cn) { 
     var allT=document.getElementsByTagName('*'), allCN=[], i=0, a; 
     while(a=allT[i++]) { 
      a.className==cn ? allCN[allCN.length]=a : null; 
     } 
     return allCN 
    } 
} 
1

कोशिश काम नहीं करता है सकते हैं यह काम करना चाहिए:

function(className) 
{ 
    var matchingItems = []; 
    var allElements = document.getElementsByTagName("*"); 

    for(var i=0; i < allElements.length; i++) 
    { 
     if(allElements [i].className == className) 
     { 
      matchingItems.push(allElements[i]); 
     } 
    } 

    return matchingItems; 
} 
+0

हाँ, लेकिन यह उपयोग करने के लिए मेरा सुझाव नहीं है इस तरह, मैंने इस तरह कुछ करने का प्रयास किया और फिर मुझे आई 7 में एक बड़ा प्रदर्शन मुद्दा मिला, क्योंकि यह बहुत धीमी गति से चल रहा है –

+0

मैं सहमत हूं। निश्चित रूप से अधिक सुरुचिपूर्ण समाधान हैं। मैं देखता हूं कि नीचे @ कुनल नियमित अभिव्यक्तियों का उपयोग कर रहा है जो क्लीनर भी है। मैं बस एक त्वरित विकल्प प्रदान कर रहा था ताकि अनुरोधकर्ता एक विचार प्राप्त कर सके। – spinon

+1

यह काम नहीं करेगा यदि तत्व –

0
 

function getElementsByClassName(oElm, strTagName, strClassName){ 
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : 
     oElm.getElementsByTagName(strTagName); 
    var arrReturnElements = new Array(); 
    strClassName = strClassName.replace(/\-/g, "\\-"); 
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)"); 
    var oElement; 
    for(var i=0; i<arrElements.length; i++){ 
     oElement = arrElements[i];  
     if(oRegExp.test(oElement.className)){ 
      arrReturnElements.push(oElement); 
     } 
    } 
    return (arrReturnElements) 
} 

 
+0

पर दो वर्ग लागू होते हैं, यह साइट पॉइंट बुक में कोड स्निपेट जैसा दिखता है। बस उत्सुक है अगर यह स्रोत है, या यह सिर्फ एक अजीब संयोग है? – pqsk

34

एक साधारण और एक आसान तरीका

var cusid_ele = document.getElementsByClassName('custid'); 
for (var i = 0; i < cusid_ele.length; ++i) { 
    var item = cusid_ele[i]; 
    item.innerHTML = 'this is value'; 
} 
+0

आगे बढ़ते समय, यदि लूप में तत्व हटा दिए जाते हैं तो लूप प्रत्येक दूसरी प्रविष्टि को छोड़ देगा। तो, बेहतर पीछे की तरफ जाओ। (मैंने पेयर समीक्षा लंबित, तदनुसार जवाब संपादित किया।) –

संबंधित मुद्दे