如何乘以变量?

时间:2012-09-04 23:15:54

标签: javascript multiplying

<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 += "&nbsp;";
        }
        if (spaces == "2") {
        a[i].innerHTML += "&nbsp;&nbsp;";
        }
        if (spaces == "3") {
        a[i].innerHTML += "&nbsp;&nbsp;&nbsp;";
        }
    }   
}
</script>

上面的代码旨在让用户在他们的菜单项之间添加空格。它工作正常。但是如何将它添加到可以添加任意数量空间的位置,而不是将它们限制为3?也许不知怎的,他们会在var'space'中添加他们的数字,代码会乘以那个numvber?

4 个答案:

答案 0 :(得分:4)

只需使用循环:

var spaces = 2; 

[..]

for(var i = 0; i < spaces; ++ i)
    a[i].innerHTML += "&nbsp";

答案 1 :(得分:1)

我会在单独的方法中生成字符串,例如:

function getSpaces(count) {
var spaces = "";
for(var i = 0; i < count; i++) {
       spaces += "&nbsp";
}
return spaces;
}  

然后

a[i].innerHTML = getSpaces(2); //etc

这样你设置innerHTML并只访问一次数组,也没有重复的代码。

答案 2 :(得分:0)

为什么不在if子句中创建一个循环,每次循环时都会添加&nbsp;

答案 3 :(得分:0)

如果可以,请避免使用innerHTML,因为它会删除并重新创建元素的整个内容。请改为appendChildcreateTextNode。例如:

a[i].appendChild(document.createTextNode(new Array(spaces + 1).join("\u00A0")));