জাভাস্ক্রিপ্ট নামে উপাদান পান


127

এই ফাংশনটি বিবেচনা করুন:

function validate()
{
  var acc = document.getElementsByName('acc').value;
  var pass = document.getElementsByName('pass').value;

  alert (acc);
}

এবং এই এইচটিএমএল অংশ:

<table border="0" cellpadding="2" cellspacing="0" valign="top">
    <tr>
        <td class="td1">Account</td>
        <td class="td2"><input type="text" name="acc" /></td>
    </tr>
    <tr class="td1">
        <td>Password</td>
        <td class="td2"><input type="password" name="pass" /></td>
    </tr>
</table>
<div><button onClick="validate()" class="cupid-greenx">Login now</button></div>

সতর্কতা বাক্সটি প্রদর্শিত হচ্ছে তবে এটি "অপরিজ্ঞাত" দেখায়।


আপনি যদি এটি পুরোপুরি পরিবর্তন করতে পারেন তবে আমি আপনার দুটি ইনপুট ক্ষেত্রে একটি ক্ষেত্র "আইডি" যুক্ত করার পরামর্শ দেব এবং ব্যবহার করব document.getElementById, যা ঠিক এক মান দেয়।
ওডি

4
আরও ভাল var inputs = document.getElementsByTagName('input'):, একটি নোডলিস্টকে ফেরত দেয়, সেখান থেকে আপনি উভয় উপাদানই এর মতো বের করতে পারেন: var পাস = ইনপুটস.াইটেম ('পাস')। কেবলমাত্র একটি টিপস, আপনি যদি কোনও বড় getElementByIdডিওএম নিয়ে কাজ করছেন তবে এটি জিনিসগুলিকে গতিময় করতে পারে, যেমন প্রতিবার পুরো গাছটি অনুসন্ধান করবে, যদিও কোনও নোডলিস্ট এটি তত দ্রুত নয় ...
এলিয়াস ভ্যান ওটেজেম

ছোট্ট কিউট কোডটি আসলে এক্সডি
গিলারমো গুটিরিজ

উত্তর:


246

আপনি যে ত্রুটিটি দেখছেন তার কারণ হ'ল উপাদানগুলির document.getElementsByNameএকটি ফেরত NodeList। এবং NodeListউপাদানগুলির একটির .valueসম্পত্তি নেই।

পরিবর্তে এটি ব্যবহার করুন:

document.getElementsByName("acc")[0].value

30

এই পদ্ধতিতে বহুবচন নোট করুন:

document.getElementsByName()

এটি উপাদানগুলির একটি অ্যারের প্রদান করে, সুতরাং প্রথম উপস্থিতি পেতে [0] ব্যবহার করুন, যেমন

document.getElementsByName()[0]

8
এটি কোনও অ্যারে নয়, এটি নোডলিস্ট :-)
ফ্লোরিয়ান মার্জাইন


1
@ j08691 নাঃ :) কিন্তু এটা সহজ বিভ্রান্ত করা যাবে হতে পারে: P
ফ্লোরিয়ান Margaine

অ্যারের সংজ্ঞা কী এবং কীভাবে এটি আলাদা? একটি নোডলিস্ট হ'ল এমন কিছু উপাদান যা কয়েকটি সুবিধামত পদ্ধতির সাথে এইচটিএমলেট উপাদানগুলির অ্যারের চারদিকে আবৃত থাকে। যাইহোক, এটিকে ওপি-র জন্য সাধারণ ব্যক্তির শর্তে রাখতে, আমি একটি অ্যারে বললাম।
ওজি

1
একটি অ্যারে নোডলিস্টের চেয়ে অনেক বেশি পদ্ধতি রয়েছে। একজন NodeList যেমন বিন্যাসগুলি থেকে কিছু পদ্ধতি / বৈশিষ্ট্য লাগে lengthসম্পত্তি, কিন্তু এটি অনুপস্থিত অনেক যেমন পদ্ধতি, এর map, forEachইত্যাদি কোন ব্যাখ্যা দিয়েছে কেন আমরা ব্যবহার করা প্রয়োজন: Array.prototype.forEach.call( NodeList, fn )
ফ্লোরিয়ান মার্জাইন

11

তুমি এটা চাও:

function validate() {
    var acc = document.getElementsByName('acc')[0].value;
    var pass = document.getElementsByName('pass')[0].value;

    alert (acc);
}

আপনার উত্তরে ওপি এর উদাহরণ ব্যবহার করার জন্য আপনাকে ধন্যবাদ।
ক্রিস বয়েড

@ ক্রিসবয়ড, পার্থক্যটি হ'ল আমি অ্যারে থেকে ফিরে প্রথম উপাদানটি পেয়েছি getElementsByName। হতে পারে আমার আরও স্পষ্ট করে দেওয়া উচিত ছিল - যদি আপনি পছন্দ করেন তবে নির্দ্বিধায় সম্পাদনা করুন।
এলিয়ট

আমি আপনাকে একটি পরিপূরক দিচ্ছিলাম :) উচ্চতর উত্তরগুলির
ক্রিস বয়েড

6

মেথড ডকুমেন্ট.জেট এলিমেন্টস বাইনেমে উপাদানগুলির একটি অ্যারে প্রদান করে। উদাহরণস্বরূপ আপনার প্রথমটি নির্বাচন করা উচিত।

document.getElementsByName('acc')[0].value

4
এটি কোনও অ্যারে নয়, এটি নোডলিস্ট :-)
ফ্লোরিয়ান মার্জাইন

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