javascript - 使用数据属性定位元素并动态设置值

标签 javascript html

我想为 span 元素设置一个值,但是当我使用 querySelector() 以数据属性(data-job-value)为目标时,我得到错误 span is not defined

let properties = ['name', 'age'];

properties.forEach(property => {
  let spanElement = document.querySelector(`.prop[data-${property}]`);
  spanElement.textContent = property;
});
<span class="prop" data-name></span>

最佳答案

那是因为您没有匹配“.prop[data-age]”的元素,因此 querySelector 返回 null

let properties = ['name', 'age'];

properties.forEach(property => {
  let spanElement = document.querySelector(`.prop[data-${property}]`);

  if (spanElement === null) {
    console.log(`Error: no matching elements found for query ".prop[data-${property}]"`);
    return;
  }

  spanElement.textContent = property;
});
<span class="prop" data-name></span>

如果有如下匹配的元素就不会报错

let properties = ['name', 'age'];

properties.forEach(property => {
  let spanElement = document.querySelector(`.prop[data-${property}]`);

  if (spanElement === null) {
    console.log(`Error: no matching elements found for query ".prop[data-${property}]"`);
    return;
  }

  spanElement.textContent = property;
});
<span class="prop" data-name></span>
<span class="prop" data-age></span>

关于javascript - 使用数据属性定位元素并动态设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56057739/

相关文章:

python - 使用 Xpath 提取给定 anchor 标记文本的 href

html - 响应式表单如何让文本框展开?

javascript - 为什么我得到 "TypeError: input.match(...) is null"?

javascript - 用户打印时使用 jQuery 复制 HTML

javascript - 在不同域的用户脚本之间传输数据

html - 在另一个 css 中包含一个 css 类

javascript - 当一个 div 打开时,如何在所有其他 div 上设置折叠?

html - CakePHP 隐藏_方法 POST

javascript - Onsubmit不调用函数

javascript - 合并 2 个对象数组以创建对象映射