我可以调用使用单个 createElement 生成的多个按钮的不同效果吗? (在 Javascript 中)

问题描述 投票:0回答:1

我想使用 createElement 生成许多按钮,但我无法让按钮在单击时执行不同的操作。在这个例子中,我想要一个按钮让控制台显示为“punch 10”,一个按钮让控制台显示为“kick 20”。

<html>
    <head>
        <title></title>
        <link rel="stylesheet" href="index.css">
    </head>
    <body>
        <button onclick="printBtn();">Go Joe!</button>
        <script src="index.js"></script>
    </body>
</html>
var joe = {
    age: 20,
    moves: [
        {name: "punch", power: 10,},
        {name: "kick", power: 20,},
    ]
}

function printBtn() {
    for (var i = 0; i < joe.moves.length; i++) {
        let btn = document.createElement("button");
        var n = document.createTextNode(joe.moves[i].name);
        var t = document.createTextNode(joe.moves[i].power);
        var nr = joe.moves[i].name
        var tr = joe.moves[i].power
        var linebreak = document.createElement("br")
        btn.appendChild(n);
        btn.appendChild(linebreak);
        btn.appendChild(t);
        document.body.appendChild(btn);
        btn.style.width = "125px"
        btn.style.height = "50px"
        btn.style.fontSize = "12px"
        
        btn.innerHTML.onclick = function readOut() {console.log(nr + " " + tr)}
    }
}

我尝试使用 innerHTML 为每个按钮分配一个函数,其中包含我认为每个按钮都会不同的变量,以使 console.log 方法根据单击哪个按钮说“punch 10”或“kick 20” .然而,随着变量的变化,结果也会发生变化,这导致我的 console.log 方法总是导致“kick 20”。

javascript button appendchild createelement
1个回答
0
投票

我只想在 html 中制作您需要的按钮,并在这些按钮上赋予 css“可见性:隐藏”,并使用 printBtn 函数使这些样式通过 document.getElementById("btn").style.visibility = visable 可见。

我会对此发表评论,但我还不能。

© www.soinside.com 2019 - 2024. All rights reserved.