javascript - 如何使用动态 ID 值获取 ElementByID?
问题描述
我getElementById
对动态 ID 有疑问。我需要这个值来随机计算不同的元素。
我的代码
<div class="col-lg-4" v-for="dado in dados">
<button class="btn btn-outline-danger" @click="rolagemD20">
<p>{{dado.nome}}</p>
<p v-bind:id="dado.nome">?</p>
</button>
</div>
我的功能:
在这些方法中,我会获取 ID 并与值进行比较,对每个 ID 进行不同的计算
<script>
new Vue({
el: '#app',
data: {
dados: [
{ nome: 'D4' },
{ nome: 'D6' },
{ nome: 'D8' },
{ nome: 'D10' },
{ nome: 'D12' },
{ nome: 'D20' }
]
},
methods: {
rolagemD20: function () {
var valorAleatorio = Math.floor(Math.random() * 20 + 1)
console.log(valorAleatorio)
document.getElementsById("").innerHTML = valorAleatorio
}
}
})
</script>
解决方案
在Vue中,您不需要获取每个元素的 id 来设置其 HTML 内容,只需将其值绑定如下:
new Vue({
el: '#app',
data: {
dados: [
{ nome: 'D4', value: '' },
{ nome: 'D6', value: '' },
{ nome: 'D8', value: '' },
{ nome: 'D10', value: '' },
{ nome: 'D12', value: '' },
{ nome: 'D20', value: '' },
],
},
methods: {
// getting dado by reference to set his value with "valorAleatorio"
rolagemD20: function(dado) {
var valorAleatorio = Math.floor(Math.random() * 20 + 1);
dado.value = valorAleatorio
},
},
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.10/vue.min.js"></script>
<div id="app">
<div class="col-lg-4" v-for="dado in dados">
<button class="btn btn-outline-danger" @click="rolagemD20(dado)">
<p>{{dado.nome}}</p>
<p>{{ dado.value }}</p>
</button>
</div>
</div>
推荐阅读
- javascript - 如何仅使用一个捕获来处理尝试中的错误?
- javascript - 使用 options.items 与标题的 JQuery UI 工具提示扩展
- file - 如何在 Crystal 中读取文件?
- javascript - 如何为每个没有唯一 ID 的按钮表设置 EventListener?
- ruby-on-rails - 从私钥生成的公钥在 2 种情况下不同
- powershell - 创建本地组并将用户添加到组
- c# - 私有静态变量是否与 Web 应用程序中的多个会话/用户共享?
- c# - 如何在 Newtonsoft 中设置 DateTime 格式字符串?
- c# - 使用通用静态方法的会话缓存
- sql - 加入查询以选择表