"Document.getElementByClass एक फ़ंक्शन नहीं है"


142

मैं onclickकिसी भी बटन के फंक्शन को चलाने की कोशिश कर रहा हूं class="stopMusic"। मुझे फायरबग में एक त्रुटि मिल रही है

document.getElementByClass एक फ़ंक्शन नहीं है

यहाँ मेरा कोड है:

var stopMusicExt = document.getElementByClass("stopButton");
    stopButton.onclick = function() {
        var ta = document.getElementByClass("stopButton");
        document['player'].stopMusicExt(ta.value);
        ta.value = "";
    };


आपका फ़ंक्शन-नाम एक 's' याद कर रहा है। स्वीकृत उत्तर में, लापता 's' के आस-पास का बिंदु स्पष्ट नहीं है। इसलिए यहाँ टिप्पणी कर रहा हूँ।
अनुराग प्रियदर्शी

जवाबों:


249

आप शायद मतलब document.getElementsByClassName()(और फिर परिणाम नोड सूची से पहले आइटम हथियाने):

var stopMusicExt = document.getElementsByClassName("stopButton")[0];

stopButton.onclick = function() {
    var ta = document.getElementsByClassName("stopButton")[0];
    document['player'].stopMusicExt(ta.value);
    ta.value = "";
};

आपको अभी भी त्रुटि मिल सकती है

document.getElementsByClassName कोई फ़ंक्शन नहीं है

पुराने ब्राउज़रों में, हालांकि, अगर आप उन पुराने ब्राउज़रों का समर्थन करने की आवश्यकता होती है, तो आप किस स्थिति में कमबैक कार्यान्वयन प्रदान कर सकते हैं।


धन्यवाद, यह समझ में आता है। क्या सभी क्लासनाम का चयन करने के लिए एक फ़ंक्शन है जो अधिक ब्राउज़र अनुरूप है? या सरणी नोड्स के लिए एक सीमा का चयन करना संभव है? (यानी? 0-100)?
user547794

एक अंतर्निहित कार्यान्वयन के रूप में नहीं। आपको Mootools या jQuery जैसी लाइब्रेरी का उपयोग करने की आवश्यकता हो सकती है (जो इसे सुपर आसान बनाता है)।
BoltClock

सिर्फ चयन करने के लिए एक लाइटर से भी अधिक jQuery लाइब्रेरी के लिए , आप Sizzle का उपयोग कर सकते हैं , जो कि jQuery के चयनकर्ताओं से दूर है।
zzzzBov

3
से caniuse.com/#feat=getelementsbyclassname , ऐसा केवल IE8 इस विधि के लिए समर्थन नहीं है लग रहा है।
tmeans

1
@tmeans: हाँ, हालाँकि उस समय यह एक बहुत बड़ी बात थी।
BoltClock

14

जैसा कि दूसरों ने कहा है, आप सही फ़ंक्शन नाम का उपयोग नहीं कर रहे हैं और यह सभी ब्राउज़रों में एकात्मक रूप से मौजूद नहीं है।

अगर आपको आईडी वाले तत्व के अलावा किसी अन्य चीज़ का क्रॉस-ब्राउजर लाने की ज़रूरत है document.getElementById(), तो मैं दृढ़ता से सुझाव दूंगा कि आपको एक लाइब्रेरी मिले जो सभी ब्राउज़रों में CSS3 चयनकर्ताओं का समर्थन करे। यह आपको विकास के समय, परीक्षण और बग फिक्सिंग की एक बड़ी मात्रा में बचाएगा। सबसे आसान बात यह है कि सिर्फ jQuery का उपयोग करना है क्योंकि यह बहुत व्यापक रूप से उपलब्ध है, इसमें उत्कृष्ट प्रलेखन है, सीडीएन का उपयोग नि: शुल्क है और इसके पीछे लोगों का एक उत्कृष्ट समुदाय है जो सवालों के जवाब देता है। यदि ऐसा लगता है कि आपकी आवश्यकता से अधिक है, तो आप सिज़ल प्राप्त कर सकते हैं जो सिर्फ एक चयनकर्ता पुस्तकालय है (यह वास्तव में jQuery और अन्य के अंदर चयनकर्ता इंजन है)। मैंने इसे अन्य परियोजनाओं में स्वयं उपयोग किया है और यह आसान, उत्पादक और छोटा है।

यदि आप एक साथ कई नोड्स का चयन करना चाहते हैं, तो आप कई अलग-अलग तरीकों से कर सकते हैं। यदि आप उन्हें सभी समान कक्षा देते हैं, तो आप ऐसा कर सकते हैं:

var list = document.getElementsByClassName("myButton");
for (var i = 0; i < list.length; i++) {
    // list[i] is a node with the desired class name
}

और यह उन नोड्स की सूची लौटाएगा जिनके पास उस वर्ग का नाम है।

Sizzle में, यह यह होगा:

var list = Sizzle(".myButton");
for (var i = 0; i < list.length; i++) {
    // list[i] is a node with the desired class name
}

JQuery में, यह यह होगा:

$(".myButton").each(function(index, element) {
    // element is a node with the desired class name
});

Sizzle और jQuery दोनों में, आप कई वर्ग के नाम इस तरह से चयनकर्ता में रख सकते हैं और अधिक जटिल और शक्तिशाली चयनकर्ताओं का उपयोग कर सकते हैं:

$(".myButton, .myInput, .homepage.gallery, #submitButton").each(function(index, element) {
    // element is a node that matches the selector
});

2
दस्तावेज के लिए अब व्यापक (सार्वभौमिक?) समर्थन प्रतीत होता है। EGLByClassName caniuse.com/#feat=getelementsbyclassname
मैट इवांस

@MatthewEvans - हां, यह 2011 का जवाब है।
jfriend00

12

किसी और त्रुटि की जाँच में कूदने से पहले कृपया पहले जाँच लें कि क्या

document.getElement s ByClassName () ही।

दोबारा जांचना अपने getElement रों और नहीं getElement




0

आपने इसे गलत तरीके से लिखा, यह "getElementsByClassName" होना चाहिए,

var objs = document.getElementsByClassName("stopButton");
var stopMusicExt = objs[0]; //retrieve the first node in the stack

//your remaining function goes down here.. 
document['player'].stopMusicExt(ta.value);
ta.value = "";

document.getElementsByClassName - एक से अधिक आइटम के साथ नोड्स का एक स्टैक लौटाता है, क्योंकि कई विशेषताओं को असाइन करने के लिए CLASS विशेषताओं का उपयोग किया जाता है ...


-1
    enter code here
var stopMusicExt = document.getElementByClass("stopButton").value;
    stopButton.onclick = function() {
        var ta = document.getElementByClass("stopButton");
        document['player'].stopMusicExt(ta.value);
        ta.value = "";
    };


// .value will hold all data from class stopButton

-1

getElementByClassनहीं मौजूद है, शायद आप उपयोग करना चाहते है getElementsByClassName। हालाँकि आप वैकल्पिक दृष्टिकोण का उपयोग कर सकते हैं (कोणीय / vue / प्रतिक्रिया में उपयोग किया ... टेम्पलेट)

function stop(ta) {
  console.log(ta.value) // document['player'].stopMusicExt(ta.value);
  ta.value='';
}
<input type="button" onclick="stop(this)" class="stopMusic" value='Stop 1'>
<input type="button" onclick="stop(this)" class="stopMusic" value='Stop 2'>


-1

यदि आपने यह "getElementByClassName" लिखा है, तो आप इस त्रुटि के साथ सामना करेंगे "document.getElementByClass एक फ़ंक्शन नहीं है" तो उस त्रुटि को दूर करने के लिए बस "getElementsByClassName" लिखें। क्योंकि यह तत्व नहीं तत्व होना चाहिए।


यह पहले से ही 8 साल पहले उत्तर दिया गया है, आप एक ही बात का जवाब देने से रोकने के लिए मौजूदा उत्तरों की जांच करना चाहते हैं
मिकाएल बी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.