querySelectorAll не работает для нескольких одинаковых идентификаторов

Как это исправить? Это не влияет на HTML. Я хочу, чтобы добавить HREF из JavaScript для всех через тег с одинаковыми идентификаторами. Благодаря!

<a id='mySrct' style='background-color:red;color:#fff;border-radius:25px;padding:3px 8px;float:right;'>Demo</a>
<a id='mySrct' style='background-color:red;color:#fff;border-radius:25px;padding:3px 8px;float:right;'>Demo</a>
<a id='mySrct' style='background-color:red;color:#fff;border-radius:25px;padding:3px 8px;float:right;'>Demo</a>


<script>                
var name = "google.com"; 
var elms = document.querySelectorAll("#mySrct");
elems.forEach((elem) =< {
elem.href = "www." + name;
});
</script>

3 ответа

Решение

Для вашего кода имя элемента и функция стрелки неверны. Проверьте приведенный ниже код.

var elems = document.querySelectorAll("#mySrct");

         <a id='mySrct' style='background-color:red;color:#fff;border-radius:25px;padding:3px 8px;float:right;'>Demo</a>
    <a id='mySrct' style='background-color:red;color:#fff;border-radius:25px;padding:3px 8px;float:right;'>Demo</a>
    <a id='mySrct' style='background-color:red;color:#fff;border-radius:25px;padding:3px 8px;float:right;'>Demo</a>


    <script>                
    var name = "google.com"; 
    var elems = document.querySelectorAll("#mySrct");
    elems.forEach((elem) => {
    elem.href = "www." + name;
    });
    </script>

У вас не может быть нескольких элементов с одним и тем же идентификатором. Попробуйте сделать это:

         var name = "https://www.google.com";
var elems = document.getElementsByClassName("mySrct");
var run = elems.href = name;
         .mySrct {
  background-color: red;
  color: #fff;
  border-radius: 25px;
  padding: 3px 8px;
  float: right;
}
         <a class='mySrct' href="">Demo</a>
<a class='mySrct' href="">Demo</a>
<a class='mySrct' href="">Demo</a>

Как заявили некоторые другие, цель идентификатора - быть уникальным. Однако вы можете использовать это неправильно.

         const elems = document.querySelectorAll('[id="no-proper-id"]');
for(const elem of elems) {
  console.log(elem.innerHTML);
}
         <div id="no-proper-id">A</div>
<div id="no-proper-id">B</div>
<div id="no-proper-id">C</div>
<div id="no-proper-id">D</div>
<div id="no-proper-id">E</div>

Другие вопросы по тегам