"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 = "";
    };


আপনার ফাংশন-নাম একটি 'গুলি' মিস করছে। গৃহীত উত্তরে, নিখোঁজ থাকা 'গুলি' এর আশেপাশের বিষয়টি সুস্পষ্ট নয়। সুতরাং এখানে এটি মন্তব্য।
অনুরাগ প্রিয়দর্শী

উত্তর:


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)?
ব্যবহারকারী547794

অন্তর্নির্মিত বাস্তবায়ন হিসাবে নয়। আপনাকে মটুলস বা জিকুয়েরির মতো লাইব্রেরি ব্যবহার করতে হবে (এটি এটি অত্যন্ত সহজ করে তোলে)।
BoltClock

হালকা তুলনায় jQuery লাইব্রেরির জন্য কেবল নির্বাচনগুলি করতে, আপনি সিজলটি ব্যবহার করতে পারেন যা jQuery এর নির্বাচকদের ভিত্তিতে তৈরি।
zzzzBov

3
Caniuse.com/#feat=getelementsbyclassname থেকে , দেখে মনে হচ্ছে কেবল আইই 8- র এই পদ্ধতির জন্য সমর্থন নেই।
tmeans

1
@ টিমেনস: হ্যাঁ, পোস্ট করার সময় এটি ছিল বেশ বড় ব্যাপার।
BoltClock

14

অন্যরা যেমন বলেছে, আপনি সঠিক ফাংশন নামটি ব্যবহার করছেন না এবং এটি সমস্ত ব্রাউজারে একত্রে বিদ্যমান নেই exist

আপনার যদি আইডির সাহায্যে কোনও উপাদান ছাড়া অন্য কোনও ক্রস ব্রাউজার আনার দরকার হয় document.getElementById()তবে আমি দৃ strongly়ভাবে আপনাকে এমন একটি লাইব্রেরি পেতে পরামর্শ দেব যা সমস্ত ব্রাউজার জুড়ে 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
}

এবং এটি নোডের একটি তালিকা ফিরিয়ে দেবে যে শ্রেণীর নাম রয়েছে।

সিজলে এটি এমন হবে:

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
});

সিজল এবং জিক্যুরি উভয় ক্ষেত্রে আপনি একাধিক শ্রেণীর নাম এভাবে নির্বাচকের মধ্যে রাখতে পারেন এবং আরও জটিল এবং শক্তিশালী নির্বাচক ব্যবহার করতে পারেন:

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

2
ডকুমেন্টের জন্য এখন বিস্তৃত (সার্বজনীন?) সমর্থন রয়েছে বলে মনে হয়.জেট এলিমেন্টসওয়াই ক্লাসনাম ক্যানিউজ.com
ম্যাট ইভান্স

@ ম্যাথিউএভান্স - হ্যাঁ, এটি ২০১১ এর উত্তর।
jender00

12

অন্য কোনও ত্রুটি পরীক্ষা করে নেওয়ার আগে প্রথমে দয়া করে এটি পরীক্ষা করে দেখুন

ডকুমেন্ট.জেটএলিমেন্ট এর বাইক্লাসনাম () নিজেই।

তার getElement গুলি এবং getElement নয় ডাবল পরীক্ষা করুন




0

আপনি এটিকে ভুলভাবে বানান করেছেন, এটি "get উপাদানসমূহ বাইক্লাসনাম" হওয়া উচিত,

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 = "";

ডকুমেন্ট.জেটএলিমেন্টসওয়াই ক্লাসনাম - একাধিক আইটেম সহ নোডের একটি স্ট্যাক ফেরত দেয়, যেহেতু একাধিক বস্তুর জন্য 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। তবে আপনি বিকল্প পদ্ধতির ব্যবহার করতে পারেন (কৌণিক / মান / প্রতিক্রিয়া ... টেমপ্লেটগুলিতে ব্যবহৃত)

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" লিখেছেন তবে আপনি এই ত্রুটিটির সাথে মুখোমুখি হবেন "ডকুমেন্ট.জেট এলিমেন্টবাইক্লাস কোনও ফাংশন নয়" সুতরাং এই ত্রুটি কাটিয়ে উঠতে কেবল "getElementsByClassName" লিখুন। কারণ এটি এলিমেন্ট নয় এলিমেন্ট হওয়া উচিত।


এটি ইতিমধ্যে 8 বছর আগে উত্তর দেওয়া হয়েছে, আপনি একই উত্তরটি রোধ করতে বিদ্যমান উত্তরগুলি চেক করতে চাইতে পারেন
মিকেল বি।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.