Javascript/html、动态divs、单个href';从二维数组中删除?

Javascript/html、动态divs、单个href';从二维数组中删除?,javascript,html,css,arrays,Javascript,Html,Css,Arrays,我对C#的javascript非常陌生,现在有点麻烦。我写这个函数是为了在我的网站上更容易添加菜单。它工作得很好,除了我似乎不能给我的div一个单独的url,即使我可以给他们一个单独的innerHtml 我一直在尝试不同的东西,比如divs[I].location.url等等。。但我好像什么都做不到。我当前的解决方案中每个div都有指向/contact.html的链接,这让我有点困惑 function DrawMainMenu() { var btns = [ ["Abo

我对C#的javascript非常陌生,现在有点麻烦。我写这个函数是为了在我的网站上更容易添加菜单。它工作得很好,除了我似乎不能给我的div一个单独的url,即使我可以给他们一个单独的innerHtml

我一直在尝试不同的东西,比如divs[I].location.url等等。。但我好像什么都做不到。我当前的解决方案中每个div都有指向/contact.html的链接,这让我有点困惑

function DrawMainMenu() {
    var btns = [
        ["About", "/about.html"],
        ["Portfolio", "/portfolio.html"],
        ["Resume", "/resume.html"],
        ["Contact", "/contact.html"]
    ];
    var numOfBtns = btns.length;
    var divs = new Array(numOfBtns);
    for (var i = 0; i < numOfBtns; i++) {
        divs[i] = document.createElement("div");
        divs[i].className = "menuBtn";
        divs[i].innerHTML = btns[i][0];
        divs[i].style.height = (30 / numOfBtns) + "%";
        divs[i].style.lineHeight = 3.5;
        var link = btns[i][1];
        divs[i].addEventListener('click', function() {
            location.href = link;
        }, false);
        document.getElementById("buttons").appendChild(divs[i]);
    }
}
函数drawMain菜单(){
可变基站=[
[“About”,“/About.html”],
[“Portfolio”,“/Portfolio.html”],
[“Resume”,“/Resume.html”],
[“Contact”,“/Contact.html”]
];
var numOfBtns=btns.length;
var divs=新数组(numOfBtns);
对于(变量i=0;i

谢谢

问题在于变量
link
在每次迭代中都会被覆盖,因此当事件处理程序调用时,它会得到
link
,这是字符串
'/contact.html'
,因为这是最后给它的值

您可以尝试将
onclick
属性设置为元素,这将变量存储在属性
onclick
中。因此,它将具有旧的和正确的值

函数drawMain菜单(){
可变基站=[
[“About”,“/About.html”],
[“Portfolio”,“/Portfolio.html”],
[“Resume”,“/Resume.html”],
[“Contact”,“/Contact.html”]
];
var numOfBtns=btns.length;
var divs=新数组(numOfBtns);
对于(变量i=0;i

这是一个多么伟大的解决方案,可能会重复!在setAttribute()中使用“onclick”真是太酷了。谢谢你的帮助,我真的很感谢你的回复@luna游戏实际上也有一个选择。我已经将其添加到我的代码中。你也可以试试。