停止使用 getElementById 和 target by class 在输入框更改时更新文本内容

Stop using getElementById and target by class to update text content upon input box change

我正在尝试将我的代码片段更新为:

1 - 如果输入有值,则在事件侦听器更新 span 标签之前将值输出到 span.Permalink

2 - 通过 class 而不是 ID 来定位跨度。我不得不添加不止一个 span 标签,所以我不能再使用 ID

如果 span 标签有 ID,我可以使用代码片段,但现在我需要输入值来更新所有带有 class of .Permalink 的 span 标签。

我尝试了 getElementsByClassName、getElementByClassName 和 $(.span.Permalink 以及其他一些方法。

window.onload = function() {
  const nameField = document.querySelector('[name="accsc_settings[accsc_get_started_home_page_title]"]');
  nameField.addEventListener('input', function() {
    document.getElementById('Permalink').textContent = this.value.toLowerCase().replace(/ /g, "-");
  })  
};
<div class="home_page_title">
  <input id="nameField" type="text" name="accsc_settings[accsc_get_started_home_page_title]" value="West Coast" data-depend-id="accsc_home_page_title">
</div>

<div>/<span class="Permalink"></span>/about-us/</div>
<div>/<span class="Permalink"></span>/contact/</div>
<div>/<span id="Permalink"></span>/products/</div>

document.getElementsByClassName 对我来说工作正常。我刚刚添加了 Array.from 以将 HTMLCollection 转换为数组,因此我可以使用 Array.forEach 来迭代集合。

window.onload = function() {
      const nameField = document.querySelector('[name="accsc_settings[accsc_get_started_home_page_title]"]');
      nameField.addEventListener('input', function() {
        const nameFieldVal = this.value;
        //Using Array.from to convert HTMLCollection to Array
        //Array.forEach to iterate each span
        //set the textContent property of each span with className "Permalink"
        Array.from(document.getElementsByClassName('Permalink')).forEach((el) => el.textContent = nameFieldVal.toLowerCase().replace(/ /g, "-"));
      })  
    };
    <div class="home_page_title">
      <input id="nameField" type="text" name="accsc_settings[accsc_get_started_home_page_title]" value="West Coast" data-depend-id="accsc_home_page_title">
    </div>

    <div>/<span class="Permalink"></span>/about-us/</div>
    <div>/<span class="Permalink"></span>/contact/</div>
    <div>/<span class="Permalink"></span>/products/</div>