Javascript 让我发疯
我有一个简单的JavaScript东西,它让我发疯 输出不是一个以“subSectionNames[i]”作为文本的链接(我尝试用简单的“test”替换),但结果是一样的:它将URI作为明文输出:“domain.com/resume.php”。没有任何链接 想法 测试的受控假设:Javascript 让我发疯,javascript,innerhtml,Javascript,Innerhtml,我有一个简单的JavaScript东西,它让我发疯 输出不是一个以“subSectionNames[i]”作为文本的链接(我尝试用简单的“test”替换),但结果是一样的:它将URI作为明文输出:“domain.com/resume.php”。没有任何链接 想法 测试的受控假设: var subSectionNames = Array("Hired Positions", "Contract Positions"); resume.addSubSections(subSectionNames);
var subSectionNames = Array("Hired Positions", "Contract Positions");
resume.addSubSections(subSectionNames);
(东西介于两者之间)
this.addSubSections=函数(subsectionname){
subSectionHeading=document.createElement('span');
subSectionHeading.setAttribute('id','subHeading');
subSectionHeading.setAttribute('class','resumeSubHeading');
对于(var i=0;i您不能将innerHTML
设置为DOM对象--它只保存字符串!相反,请使用subSectionHeading.appendChild(link)
您不能将innerHTML
设置为DOM对象--它只保存字符串!相反,请使用subSectionHeading.appendChild(link)
ohhhhh。我明白了。问题根本不在于链接脚本。现在就测试它。ohhhhh。我明白了。问题根本不在于链接脚本。现在就测试它。你可能应该尽量避免使用el.innerHTML=el.innerHTML+等
,因为这会让你的浏览器以低效的方式多次破坏DOM。此外,您可以使用直接属性访问替换所有对setAttribute的调用-速度更快,问题更少,例如link.href='#'
。请注意链接的常见建议-它们实际上应该是链接,所以请给它们一个真正的href或使用按钮或类似操作。您可能应该尽量避免使用el.innerHTML=el.innerHTML+etc
,因为这会使您的浏览器以一种低效的方式多次破坏DOM。此外,您可以使用直接属性访问替换所有对setAttribute的调用-速度更快,问题更少,例如link.href='#'
。请注意链接的常见建议-它们应该是链接,所以请给它们一个真正的href或u按下按钮或类似按钮。
this.addSubSections = function(subSectionNames) {
subSectionHeading = document.createElement('span');
subSectionHeading.setAttribute('id', 'subHeading');
subSectionHeading.setAttribute('class', 'resumeSubHeading');
for (var i=0;i<subSectionNames.length;i++) {
var link = document.createElement('a');
link.setAttribute('class', 'resumeSubHeadingLink');
link.setAttribute('href', '#');
var clickEvent = "showSubHeading('" + subSectionNames[i] + "')";
link.setAttribute('onClick', clickEvent);
link.innerHTML=subSectionNames[i];
link.innerHTML="test"+i;
subSectionHeading.innerHTML = subSectionHeading.innerHTML + link;
}
document.getElementById('leftInner').appendChild(subSectionHeading);
}