【问题标题】:Incrementing variable id using javascript button onclick event使用javascript按钮onclick事件递增变量id
【发布时间】:2021-12-30 18:28:55
【问题描述】:

我试图在每次单击按钮时增加元素的 id

我很困惑为什么它在用于 innerHTML 而不是 id 时起作用

我的标记

<p id="demo"></p>
<button onclick="myfunction()">press me</button>

递增内部 html

<script>
    var a = 1;

    function myfunction(){
        document.getElementById("demo").innerHTML = a;
         a++;
        
    }
</script>

递增元素变量 id

<button onclick="myfunction()">press me</button>

<script>
    var a = 1;

    function myfunction(){
        document.getElementById("demo").id = a;
         a++;
    }
</script>

【问题讨论】:

  • 你怎么知道它对 id 不起作用?此外,id 不能以数字开头。试试id = "ele"+a;
  • 你是对的。我忘记了 id 不能以数字开头。我试过这个,document.getElementById("demo").id = "ele"+a;但它仍然给了我错误i.imgur.com/IZh4Ott.png
  • @cha 因为您将 id 从 'demo' 更改为新值,然后您尝试获取 ID 为 'demo' 的元素,但现在不存在。
  • 第二个例子只能工作 once 因为一旦你改变了 id 你就不能再使用旧的 id 选择同一个元素(因为那个 id 不再存在)。
  • aa,感谢您指出这一点。生病尝试将 getelementbyid 设置为变量。看看情况如何。这有点挑战性。并且可能也将标记 ID 设置为变量。仍然不确定如何实现该自动取款机。如果有人有建议,我会全力以赴。

标签: javascript html variables dom increment


【解决方案1】:

请欣赏这个关于将元素存储到变量中以供重用的演示。看起来您的问题是在 id 更改后尝试按 id 选择元素。

let cntr = 1;

const demo = document.getElementById("demo");

document.querySelector("button")
.addEventListener("click", function () {
  const val = cntr % 4;
  demo.id = "ele" + val;
  cntr++;
});
.demo {
  height: 5rem;
  aspect-ratio: 1;
  border-radius: 50%;
  background: black;
  margin: auto;
  
  display: flex;
  justify-content: center;
  align-items: center;
  
  transition: background 1s;
}

#ele1 {
  background: pink;
}

#ele2 {
  background: lightblue;
}

#ele3 {
  background: lightgreen;
}
&lt;div id="demo" class="demo"&gt;&lt;button&gt;Clicky!&lt;/button&gt;&lt;/div&gt;

【讨论】:

  • 另外,您可能正在使用 html id,而您应该使用 data attribute
  • 你好,感谢分享。除了这部分 const val = (cntr % 4) + 1; 之外,一切对我来说都是完全有意义的。 iirc const 声明只能使用一次。 的 (cntr % 4) 是什么
  • 对不起,我稍微编辑了帖子,评论没有反映现在的内容。 const 变量只能分配一次,但它只能在其范围内分配一次。在构建更复杂的代码时,const 通常更适合用于避免错误,而且它不像var 那样被提升。 cntr % 4modulus operator,它基本上是除法时的“余数”。这样我的数字始终是 0 - 3,并且我在 0 - 3 之间循环,而无需编写更多逻辑。
  • 别担心,这和你的第一条评论真的很有帮助。我正在研究数据属性和模数。他们看起来真的很强大
猜你喜欢
  • 1970-01-01
  • 2020-10-18
  • 1970-01-01
  • 2018-06-24
  • 1970-01-01
  • 2018-01-09
  • 1970-01-01
  • 2023-03-30
  • 2014-08-14
相关资源
最近更新 更多