有你的方法的各個方面,可製造「容易」:
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,因爲我的代碼很爛大聲笑我怎樣才能刪除逗號? –