javascript - 从具有唯一 onclick 参数的模板创建按钮的动态列表
问题描述
你好仁慈的互联网陌生人!我是一个从 c# 转过来的 js 菜鸟,并且已经为一些真正不应该那么困难的事情苦苦挣扎了好几天。我的意图如标题中所述,我的无能代码如下:
function Create_button () {
let temp = document.getElementsByTagName("template")[0];
clon = temp.cloneNode;
clon.onclick = someFunction(someparam);
}
<!DOCTYPE html>
<html>
<body>
<script src="Test3.js"></script>
<button onclick="Create_button()">New</button>
<div id="entry_list">
</div>
<template>
<button>Alert</button>
</template>
</body>
</html>
解决方案
我很感激你开始学习 JavaScript 的雄心。我建议您在此过程中学习现代前端框架,例如 VueJS。如果我正确理解了您的挑战,您希望创建一种方法来动态添加带有自定义处理程序的按钮。您可以在添加的代码段中查看它。祝你在学习 JavaScript 的道路上好运!
参考资料:
https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
https://vuejs.org/v2/guide/events.html
<!DOCTYPE html>
<html>
<head>
<title>My first Vue app</title>
<script src="https://unpkg.com/vue"></script>
</head>
<body>
<div id="app">
{{ message }}
<div @click="addButton">Add button</div>
<div v-for="(button, index) in buttonsWithData">
<button @click="button.handler">{{ button.name }}</button>
</div>
</div>
<script>
var app = new Vue({
el: "#app",
data: {
message: "Hello Vue!",
buttonsWithData: [
{
name: 'foo',
value: 42,
handler: () => { console.log('some handler') }
}
],
buttons: [
() => {
console.log("first");
},
() => {
console.log("second");
},
() => {
console.log("third");
}
]
},
computed: {
buttonCount: function() {
return this.buttons.length
}
},
methods: {
addButton: function() {
this.buttons.push(() => {
console.log(`button ${this.buttonCount}`)
})
}
}
});
</script>
</body>
</html>
推荐阅读
- php - 如何将两个或多个关联数组与键组合为前一个数组元素的值,创建一个多级数组?
- swift - 具有自定义类类型的 Swift CoreData 保存属性
- html - 如何使 child z-index 超过 parent 或任何其他方式来达到效果?
- apache-flink - 在我的简单应用程序中没有创建检查点文件
- postgresql - postgres数据与同一张表中的多个服务器同步
- ruby-on-rails - 如何在点击 ruby on rails 时从下拉列表中获取选定的值?
- angular - 如何在使用 observable 更新数组时更新 *ngFor 以及如何在网站加载时初始化 observable?
- typo3 - TYPO3 routeEnhancers 在根页面上带有后缀“.html”
- java - 在 UPDATE 语句中绑定和添加参数:PostgreSQL
- javascript - 带有 Javascript 的 WebView 不断重新加载