<script type = "text/javascript">
//Add spaces between menu links
//Placement: Global Header
//Coded by Game
var spaces = "2"; //Edit number of spaces between menu links (1,2 or 3)
var a = document.getElementsByTagName("a");
for (i = 0; i < a.length; i++) {
if (a[i].parentNode.parentNode.className == "menubg" && a[i].innerHTML.match(/Home|new topics|help|search|members|calendar|admin|profile|logout|register|login/i)) {
if (spaces == "1") {
a[i].innerHTML += " ";
}
if (spaces == "2") {
a[i].innerHTML += " ";
}
if (spaces == "3") {
a[i].innerHTML += " ";
}
}
}
</script>
上面的代码旨在让用户在他们的菜单项之间添加空格。它工作正常。但是如何将它添加到可以添加任意数量空间的位置,而不是将它们限制为3?也许不知怎的,他们会在var'space'中添加他们的数字,代码会乘以那个numvber?
答案 0 :(得分:4)
只需使用循环:
var spaces = 2;
[..]
for(var i = 0; i < spaces; ++ i)
a[i].innerHTML += " ";
答案 1 :(得分:1)
我会在单独的方法中生成字符串,例如:
function getSpaces(count) {
var spaces = "";
for(var i = 0; i < count; i++) {
spaces += " ";
}
return spaces;
}
然后
a[i].innerHTML = getSpaces(2); //etc
这样你设置innerHTML并只访问一次数组,也没有重复的代码。
答案 2 :(得分:0)
为什么不在if
子句中创建一个循环,每次循环时都会添加
?
答案 3 :(得分:0)
如果可以,请避免使用innerHTML
,因为它会删除并重新创建元素的整个内容。请改为appendChild
和createTextNode
。例如:
a[i].appendChild(document.createTextNode(new Array(spaces + 1).join("\u00A0")));