【问题标题】:Styling for "this" inside "forEach" function“forEach”函数中“this”的样式
【发布时间】:2019-09-22 12:47:21
【问题描述】:

我正在尝试为自己构建一个小工具,以便在我即将进行的项目中使用,但我遇到了一个小问题。

当我出于某种原因在 forEach 函数中添加样式时,它没有成功!

所以这里'我的代码看起来如何:

<p data-att1="30">1</p>
<p data-att1="30">2</p>
<p data-att3="30">3</p>
<p data-att3="30">4</p>



let dataAttr = "[data-att1], [data-att2], [data-att3]";
let dataMain = document.querySelectorAll(dataAttr);
let p = "px";

const mainFn = () => {
  dataMain.forEach(function () {
    this.style.marginBottom = document.querySelector('[data-att1]').getAttribute('data-att1') + p;
    this.style.marginTop = document.querySelector('[data-att3]').getAttribute('data-att3') + p;
  });
};

【问题讨论】:

  • 完成,添加了 html

标签: javascript html styling


【解决方案1】:

您没有在正确的this 范围内工作。而是使用 el 作为元素参数并引用该范围。

let dataAttr = "[data-att1], [data-att2], [data-att3]";
let dataMain = document.querySelectorAll(dataAttr);
let p = "px";

const mainFn = () => {
  dataMain.forEach(function (el) {
    el.style.marginBottom = document.querySelector('[data-att1]').getAttribute('data-att1') + p;
    el.style.marginTop = document.querySelector('[data-att3]').getAttribute('data-att3') + p;
  });
};

【讨论】:

  • 在它只为所有选定元素提供第一个样式属性(margin-bottom)之前尝试过。
  • 请将 data-att2 更改为 > data-att1(输入错误)
  • @K_LUN 你到底想达到什么目标?看起来你想要的东西与所问的不同。
猜你喜欢
  • 2017-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-01
  • 2020-01-17
  • 2015-09-29
  • 2012-03-22
相关资源
最近更新 更多