为什么具有相同属性的两个对象不能以相同的方式工作

诺瑞德·拉斐尔

在 Javascript30 中执行任务时,我注意到

document.querySelectorAll('input')[0].style.setPropertydocument.documentElement.style.setProperty输出相同的对象,但当我尝试设置属性时,前者不起作用。

我想知道为什么前者不起作用而后者起作用。

我做了一个 console.log 来查看两行代码的输出。

let controller = document.querySelectorAll(".controller input");

//console.log(document.querySelectorAll('input')[0].style.setProperty);
//console.log(document.documentElement.style.setProperty);
function handleChange() {
  const suffix = this.dataset.sizing || "";
  document.documentElement.style.setProperty(`--${this.name}`, this.value + suffix);
  /*document.querySelectorAll('input').forEach((input) => {
   input.style.setProperty(`--${this.name}`, this.value + suffix);
  });*/
}

controller.forEach(input => input.addEventListener('change', handleChange));
controller.forEach(input => input.addEventListener('mousemove', handleChange));
body {
  text-align: center;
  color: white;
  background-color: rgb(150, 200, 140);
}

:root {
  --blur: 10px;
  --spacing: 10px;
  --color: red;
}

img {
  padding: var(--spacing);
  filter: blur(var(--blur));
  background: var(--color);
}
<header>Playing with CSS variables and JS</header>
<div class="controller">
  <label for="spacing">Spacing: </label>
  <input type="range" min="10" max="200" id="spacing" name="spacing" value="10" data-sizing="px">
  <label for="blur">Blur: </label>
  <input type="range" min="0" max="30" id="blur" name="blur" value="10" data-sizing="px">
  <label for="color">Base Color</label>
  <input type="color" id="color" name="color">
</div>
<img src="https://res.cloudinary.com/dzwmmrwr2/image/upload/v1542708495/6_kmfxtt.png" alt="image" width="300" height="350">

普朗克

J·萨迪

问题是您正在使用 querySelector 选择“输入元素”,而不是像您那样选择“html-元素” document.documentElement

使用document.querySelectorAll('html')而不是document.querySelectorAll('input')解决您的问题:

// Code goes here

let controller = document.querySelectorAll(".controller input");

function handleChange() {
  const suffix = this.dataset.sizing || "";
  document.querySelectorAll('html').forEach((input) => {
    input.style.setProperty(`--${this.name}`, this.value + suffix);
  });
}

controller.forEach(input => input.addEventListener('change', handleChange));
controller.forEach(input => input.addEventListener('mousemove', handleChange));
body {
  text-align: center;
  color: white;
  background-color: rgb(150, 200, 140);
}

:root {
  --blur: 10px;
  --spacing: 10px;
  --color: red;
}

img {
  padding: var(--spacing);
  filter: blur(var(--blur));
  background: var(--color);
}
<header>Playing with CSS variables and JS</header>
<div class="controller">
  <label for="spacing">Spacing: </label>
  <input type="range" min="10" max="200" id="spacing" name="spacing" value="10" data-sizing="px">
  <label for="blur">Blur: </label>
  <input type="range" min="0" max="30" id="blur" name="blur" value="10" data-sizing="px">
  <label for="color">Base Color</label>
  <input type="color" id="color" name="color">
</div>
<img src="https://res.cloudinary.com/dzwmmrwr2/image/upload/v1542708495/6_kmfxtt.png" alt="image" width="300" height="350">

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

两个具有相同属性实现方式但原型不同的javascript对象

来自分类Dev

两个JavaScript函数不能以相同的方式工作

来自分类Dev

检查带有对象的字典是否包含两个具有相同属性的对象

来自分类Dev

获得具有相同属性的两个对象之间的差异

来自分类Dev

java bean在两个不同的类中不能以相同的方式工作

来自分类Dev

将具有相同属性的两个对象的方法合并到每个属性的数组中

来自分类Dev

将具有相同属性的两个对象的方法合并到每个属性的数组中

来自分类Dev

为什么我不能有两个具有相同TTL的同名记录?

来自分类Dev

有两个具有相同属性的不同库-Swing

来自分类Dev

为什么两个表不能具有相同名称的索引?

来自分类Dev

Specman为什么不能导入两个具有相同名称的文件?

来自分类Dev

使用LINQ从两个具有相同属性的不同列表创建对

来自分类Dev

在两个不同的Mysql AWS服务器中,SQL查询不能以相同的方式工作

来自分类Dev

比较两个对象数组,并删除第二个对象数组中具有相同属性值的项

来自分类Dev

比较两个对象数组,并删除第二个对象数组中具有相同属性值的项

来自分类Dev

我可以为具有相同属性名称的两个类定义一个公共接口吗?

来自分类Dev

我可以定义具有相同属性但值不同的两个接口的联合类型吗?

来自分类Dev

将两个数据集合并为一个,并获得具有相同属性的列的均值

来自分类常见问题

具有基本接口相同的两个约束,但两个约束不能相同

来自分类Dev

具有基本接口相同的两个约束,但两个约束不能相同

来自分类Dev

为什么在Python中比较具有相同值的两个属性类型float和int会得到False?

来自分类Dev

Sparql查询:查找具有相同属性对象的对象

来自分类Dev

具有相同列表的两个变量具有不同的ID .....为什么?

来自分类Dev

为什么在比较两个具有相同int值的对象类型变量时==不起作用

来自分类Dev

如果两个对象具有相同的hashCode并通过等号限定相等,则它们为什么失败==

来自分类Dev

POST中的两个相同属性

来自分类Dev

在Rust中具有相同属性的多个结构的惯用方式是什么?

来自分类Dev

Linq 确保没有两个对象具有相同的属性值

来自分类Dev

计算具有相同属性值的对象

Related 相关文章

  1. 1

    两个具有相同属性实现方式但原型不同的javascript对象

  2. 2

    两个JavaScript函数不能以相同的方式工作

  3. 3

    检查带有对象的字典是否包含两个具有相同属性的对象

  4. 4

    获得具有相同属性的两个对象之间的差异

  5. 5

    java bean在两个不同的类中不能以相同的方式工作

  6. 6

    将具有相同属性的两个对象的方法合并到每个属性的数组中

  7. 7

    将具有相同属性的两个对象的方法合并到每个属性的数组中

  8. 8

    为什么我不能有两个具有相同TTL的同名记录?

  9. 9

    有两个具有相同属性的不同库-Swing

  10. 10

    为什么两个表不能具有相同名称的索引?

  11. 11

    Specman为什么不能导入两个具有相同名称的文件?

  12. 12

    使用LINQ从两个具有相同属性的不同列表创建对

  13. 13

    在两个不同的Mysql AWS服务器中,SQL查询不能以相同的方式工作

  14. 14

    比较两个对象数组,并删除第二个对象数组中具有相同属性值的项

  15. 15

    比较两个对象数组,并删除第二个对象数组中具有相同属性值的项

  16. 16

    我可以为具有相同属性名称的两个类定义一个公共接口吗?

  17. 17

    我可以定义具有相同属性但值不同的两个接口的联合类型吗?

  18. 18

    将两个数据集合并为一个,并获得具有相同属性的列的均值

  19. 19

    具有基本接口相同的两个约束,但两个约束不能相同

  20. 20

    具有基本接口相同的两个约束,但两个约束不能相同

  21. 21

    为什么在Python中比较具有相同值的两个属性类型float和int会得到False?

  22. 22

    Sparql查询:查找具有相同属性对象的对象

  23. 23

    具有相同列表的两个变量具有不同的ID .....为什么?

  24. 24

    为什么在比较两个具有相同int值的对象类型变量时==不起作用

  25. 25

    如果两个对象具有相同的hashCode并通过等号限定相等,则它们为什么失败==

  26. 26

    POST中的两个相同属性

  27. 27

    在Rust中具有相同属性的多个结构的惯用方式是什么?

  28. 28

    Linq 确保没有两个对象具有相同的属性值

  29. 29

    计算具有相同属性值的对象

热门标签

归档