Javascript 如何将带有循环的函数添加到<;脚本>;使用innerHTML标记

Javascript 如何将带有循环的函数添加到<;脚本>;使用innerHTML标记,javascript,html,Javascript,Html,我试图为JavaScript中的列表的每一项添加一个函数,因为我不知道元素的总数,它需要是动态的。 为了做到这一点而不必无限次地复制粘贴代码,我决定通过将函数添加到标记的innerHTML中,将函数添加到我的html脚本标记中。 以下是我的Javascript代码: function myfun(){ var bro= document.getElementById('helo'); var x=["admin","RKP", "VK","TS","MODBK"];

我试图为JavaScript中的列表的每一项添加一个函数,因为我不知道元素的总数,它需要是动态的。 为了做到这一点而不必无限次地复制粘贴代码,我决定通过将函数添加到标记的innerHTML中,将函数添加到我的html脚本标记中。 以下是我的Javascript代码:

function myfun(){
    var bro= document.getElementById('helo');
    var x=["admin","RKP",   "VK","TS","MODBK"];
    var scr=document.getElementById('addscr');
    for(i=1;i<x.length;i++){
    bro.innerHTML +="<div class=\"column\"><h2 class=\"white-text title\">asdf</h2><div class=\"col-lg-2\"> <p class=\"t\">Rank</p> <div class=\"input-group\"> <p class=\"bruh\" id=\"price\">1</p></div> </div> <div class=\"col-lg-2\"> <p class=\"t\">Attack</p> <div class=\"input-group\"> <p class=\"bruh\" id=\"attack\">0</p> </div> </div><div class=\"col-lg-2\"><p class=\"t\">Defence</p> <div class=\"input-group\"> <p class=\"bruh\" id=\"defense\">0</p> </div> </div> <button class=\"butt\" style=\"width:150px;margin-top:0px;margin-left:100px\" onclick=\"nk"+i+"()\" >Attack</button></div>";
    scr.innerHTML+="function nk"+i+"(){location.href=\"#pop"+i+"\";}";
}}
函数myfun(){
var bro=document.getElementById('helo');
变量x=[“管理”、“RKP”、“VK”、“TS”、“MODBK”];
var scr=document.getElementById('addscr');

对于(i=1;i脚本标记只执行一次,更改其文本不会再次运行。因此,您放入脚本标记中的代码不会运行,您的函数也不会实际创建

与其尝试生成多个函数,不如只生成一个函数,您可以将数字传递给:

function nk(num){
  location.href="#pop"+num;
}
//notice the placement of "i" is changed to make 
//onclick="nk(1)" and so on
bro.innerHTML += "... onclick=\"nk("+i+")\" > ..."

您没有定义
scr
。请尝试
var scr=document.getElementById('addscr')).innerHTML;
@MattCroak在定义了scr之后,我得到了一个错误:Uncaught ReferenceError:nk1没有在HTMLButtoneElement定义。onClick甚至没有意义生成一个函数来做这件事。只要有一个泛型函数并将字符串传递给它。@epascarlo我对jav不太了解AsScript并不能这样想。谢谢你的帮助。在一个SeNeNoT中,用这样的字符串制作新的DOM元素给我带来了错误的方式…考虑把它们放到模板元素中(或者只是一个<代码> div <代码>用<代码>显示:没有;),并用<代码>节点.C克隆(true)< /> >复制它们。