Javascript 如何向动态创建的按钮添加链接?

Javascript 如何向动态创建的按钮添加链接?,javascript,Javascript,创建按钮后,是否可以添加链接或使用window.location方法,如:`window.location='nextpage.html?foo=number'。我现在有这个 var typeValue = location.search; var typeStringValue= typeValue.replace("?type=",""); var containers = typeValue.replace("?type=multi",""); var containersValue =

创建按钮后,是否可以添加链接或使用window.location方法,如:`window.location='nextpage.html?foo=number'。我现在有这个

var typeValue = location.search;
var typeStringValue= typeValue.replace("?type=","");
var containers = typeValue.replace("?type=multi","");
var containersValue = parseInt(containers);
var sampleLetter = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];

function createButton(buttonName){
    var buttonDivBlock = document.getElementById("sampleSets");
    var buttonElement = document.createElement("input");
        buttonElement.setAttribute("type","button");
        buttonElement.setAttribute("name",buttonName);
        buttonElement.setAttribute("value","Sample Set"+" "+buttonName);
        buttonElement.setAttribute("id",buttonName);
        buttonDivBlock.appendChild(buttonElement);
     // document.getElementById(sampleLetter[i]).setAttribute('onclick',window.location='SampleInfo.html'+typeStringValue+bottonName);<!--add the button link -->
}

function setButtons(numberOfContainers){

     for(i=0;i<numberOfContainers;i++){
         createButton(sampleLetter[i]);

     }
}

window.onload = function(){
    setButtons(containersValue);
}
var typeValue=location.search;
var typeStringValue=typeValue.replace(“?type=”,”);
var容器=typeValue.replace(“?type=multi”,”);
var containersValue=parseInt(容器);
var sampleLetter=[“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”、“I”、“J”、“K”、“L”、“M”、“N”、“O”、“P”、“Q”、“R”、“S”、“T”、“U”、“V”、“W”、“X”、“Y”、“Z”];
函数createButton(buttonName){
var buttonDivBlock=document.getElementById(“样本集”);
var buttonElement=document.createElement(“输入”);
setAttribute(“类型”、“按钮”);
setAttribute(“名称”,buttonName);
setAttribute(“值”、“样本集”+“”+buttonName);
setAttribute(“id”,buttonName);
buttonDivBlock.appendChild(buttonElement);
//document.getElementById(sampleLetter[i]).setAttribute('onclick',window.location='SampleInfo.html'+typeStringValue+bottoname);
}
功能设置按钮(numberOfContainers){

对于(i=0;i嗯,也许我可以帮你举个例子:

function getFive() { return 5;}

callOtherFunction("stringArgument", getFive());
callOtherFunction的第二个参数将是5,而不是getFive函数。在许多情况下,如添加事件侦听器和AJAX代码,您实际上希望将函数本身作为参数传递,以便稍后调用。但是如果您不想单独声明该函数,则如下所示:

callOtherFunction("stringArgument", function() { return 5; });
要使代码看起来更干净,可以在{之后按Enter键并生成一个多行函数


现在,记住所有这些,再看一看你评论的那行。你看到遗漏了什么吗?(附言:为“怂恿”的形式道歉-我发现如果我帮助他们找到解决方案,而不仅仅是向他们展示,人们会更善于弄清楚问题)

好吧,也许我可以帮你举个例子:

function getFive() { return 5;}

callOtherFunction("stringArgument", getFive());
callOtherFunction的第二个参数将是5,而不是getFive函数。在许多情况下,如添加事件侦听器和AJAX代码,您实际上希望将函数本身作为参数传递,以便稍后调用。但是如果您不想单独声明该函数,则如下所示:

callOtherFunction("stringArgument", function() { return 5; });
要使代码看起来更干净,可以在{之后按Enter键并生成一个多行函数


现在,记住所有这些,再看一看你评论出来的那句话。你看到遗漏了什么吗?(附言:为“怂恿”的形式道歉-我发现如果我帮助人们找到解决方案,而不仅仅是向他们展示,人们会更善于弄明白)在您尝试使用变量的位置未定义
sampleLetter
变量(根据注释代码判断)。请使用几行之前刚刚设置为
id
属性的值

document.getElementById(buttonName).setAttribute( /* ... */ );
或者,如果您试图在循环中而不是在
createButton
函数中设置它,请不要添加单引号

document.getElementById(sampleLetter[i]).setAttribute( /* ... */ );

sampleLetter
变量未在您尝试使用它的地方定义(根据注释代码判断)。请使用您刚才在几行之前设置为
id
属性的值

document.getElementById(buttonName).setAttribute( /* ... */ );
或者,如果您试图在循环中而不是在
createButton
函数中设置它,请不要添加单引号

document.getElementById(sampleLetter[i]).setAttribute( /* ... */ );


可能的重复/相关问题:,…请注意,“onclick”不是一个有效的属性,这正是您的示例代码试图做的。这不是我想要的,因为我已经尝试过了,但没有成功(@ernie我在其他页面上使用过它,但仍然有效。我的错误是,onclick是一个有效的属性…看起来你没有在getElementById中获取元素。请注意,在最近的编辑中,代码应该失败,因为
I
不会在函数中定义…哇!谢谢,让我看看它是否有效…;)谢谢!!可能的重复/相关问题:,…请注意,“onclick”不是一个有效的属性,这是您的示例代码试图做的。这不是我想要的,因为我已经尝试过了,但没有成功(@ernie我在其他页面上使用过它,但仍然有效。我的错误是,onclick是一个有效的属性…看起来你没有在getElementById中获取元素。请注意,在最近的编辑中,代码应该失败,因为
I
不会在函数中定义…哇!谢谢,让我看看它是否有效…;)谢谢!!很抱歉我在这里粘贴代码时删除了它们…谢谢您的注意;)成功不意味着
document.getElementById(sampleLetter[I])
document.getElementById(buttonname)
仍然为空?因为您可能还有其他问题阻止代码工作。找到答案的第一步是确保在调用
getElementById
时返回非空元素。两者都不是,唯一打断我的代码的行是
文档。getElementById(buttonName).setAttribute('onclick',window.location.href='SampleInfo.html'+typeStringValue+bottonName);
是的,我知道。那一行正在调用
getElementById
。那会返回一个值吗?试着把它分成两行。
var btn=document.getElementById(buttonName);
btn.setAttribute(…)
另外,
bottoname
的拼写也不一样。--…它起作用了:s…哈哈,因为一个简单的奇怪的“o”…谢谢你注意到了!很抱歉,我在粘贴代码时删除了它们…谢谢你注意;)成功不意味着
document.getElementById(sampleLetter[I])
document.getElementById(按钮名)
仍然为空?因为您可能还有其他问题阻止代码工作。找到答案的第一步是确保在调用
getElementById
时返回非空元素。两者都不是,唯一中断代码的行是t