簡體   English   中英

如何使用getElementByClassName訪問特定元素

[英]How to access specific elements with getElementByClassName

我想訪問類型為“復選框”的輸入元素,並忽略具有“文本”類型的輸入標簽。

當我使用下面的代碼時,我收到一條錯誤消息:

TypeError: outerField.getElementsByTagName is not a function

有人對如何解決這個問題有建議嗎?

JavaScript:

 outerField = document.getElementsByClassName("outerField");
 checkboxes = outerField.getElementsByTagName("input");

html標記:

 <section id="images">
  <div class="outerField">
    <input type="checkbox">
        <img src="lorem.jpg">
    <div class="innerField">
         <input type="text" value ="">
    </div> 
  </div> 

你有錯字 該函數稱為“ getElementsByClassName”,而不是“ getElementByClassName”(請注意“ Elements”中的“ s”)。

https://developer.mozilla.org/de/docs/Web/API/Document/getElementsByClassName

您將獲得每個具有“ outerField”類而不是單個元素的元素。 您必須訪問此HTMLCollection中的特定元素。

在您的示例中,這應該可行:

 outerField = document.getElementsByClassName("outerField");
 checkboxes = outerField.item(0).getElementsByTagName("input");

您可以使用querySelectorAll ,它使用類似CSS的語法來過濾類復選框:

document.querySelectorAll('.outerField input[type=checkbox]')
document.getElementByClassName("outerField");

應該

document.getElementsByClassName("outerField"); //s was missing:typo

而externalField是一個數組,像

outerField[0].getElementsByTagName("input");

方法名稱是getElementsByClassName而不是getElementByClassName。 您將獲得一個元素集合作為回報

document.querySelector[All] (請參閱MDN )使您的生活更加輕松:

 var cbxs = document.querySelectorAll('.outerField > input[type=checkbox]'); // demo: show length of cbxs within 'div.outerField') document.querySelector('.outerField') .appendChild(document.createTextNode('length of checkboxes ' + cbxs.length)); 
 <section id="images"> <div class="outerField"> <input type="checkbox"> <img src="lorem.jpg"> <div class="innerField"> <input type="text" value =""> </div> </div> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM