有你的方法的各个方面,可制造“容易”:
links = new Array();
可以更好地写为links = [];
。 (几乎)所有你会在Javascript中遇到的东西已经是一个对象,因此详细说明它并不能增加清晰度。
links[1]="first..."
links[2]="second...";
可以得到更好的编写使用.push()
,这样你就不需要指定每个索引,如:
links.push("first");
links.push("second");
或者,如果你同时做这一切,用阵列的文字,如:
links = [
"first",
"second"
];
不太好看,在我看来,也是一种选择,可能是两者的混合物,使用.concat()
:
links = [
"first",
"second"
];
links = links.concat([
"third",
"fourth"
]);
这可能是有意义的一起使用裸对象的数组,太集团的事情:
sections = [
{
heading: '<span class="asep">First section...</span>',
links: [
'<a href="#">First</a>',
'<a href="#">Second</a>'
]
},
{
heading: '<span class="asep">Second section...</span>',
links: [
'<a href="#">Third</a>',
'<a href="#">Fourth</a>'
]
},
];
function writeLinks(){
var html = "";
for(var i = 0; i < sections.length; i++){
var section = sections[i];
html += section.heading + section.links.join("");
}
document.getElementById('nav1').innerHTML = html;
}
setTimeout(writeLinks, 0);
还要注意使用.join("")
到一个数组中的所有元素连接在一起的字符串。
接下来,你的代码中有很多重复。你只能指定其中有不同的部分,例如:
sections = [
{
heading: "First section...",
links: [
"First",
"Second"
]
},
/* ...snip... */
];
function writeLinks(){
var html = "";
for(var i = 0; i < sections.length; i++){
var section = sections[i];
html += '<span class="asep">' + section.heading + "</span>";
for(var j = 0; j < section.links.length; j++){
html += '<a href="#">' + section.links[j] + "</a>";
}
}
document.getElementById('nav1').innerHTML = html;
}
setTimeout(writeLinks, 0);
你可以摆脱一些原始的HTML和简化一些环等,通过使用公共库,如jQuery或Prototype。这也可以让你真正检查文档是否准备好对其进行操作,而不是使用那种易碎的setTimeout()
黑客。例如:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript">
/* ...snip... */
$(function(){
var nav = $("<div />").attr("id", "nav1");
$.each(sections, function(i,section){
nav.append($("<span />").addClass("asep").text(section.heading));
$.each(section.links, function(i,link){
nav.append($("<a />").attr("href", "#").text(link));
}
}
$("#nav1").replaceWith(nav);
});
</script>
根据你的心情,所有这些可能被认为是“更容易”。
如果有一种方法可以在将数组链接到innerHTML时从数组中删除逗号,我可以使用我的代码,但是我的问题是我将超过100页,因此我需要一些动态:( –
存储链接在一个模型中,你是如何使它们变为动态的:)你总是可以遍历数组并解析出逗号! –
我想你可以告诉即时通讯新的JS,因为我的代码很烂大声笑我怎样才能删除逗号? –