在我的網站,我有兩個功能,象這樣幾個連續的JavaScript的innerHTML聲明:jQuery可以縮短一系列innerHTML語句嗎?
function myFunction(a, b, c, d, e, f, g) {
//Lots of code then
document.getElementById("id1").innerHTML = a;
document.getElementById("id2").innerHTML = b;
//Five more lines of this through parameter g
}
第一個函數有七行七個參數,而第二個函數有16行16個參數。我明白了(如果我使用jQuery和我的名字有一個數字慣例每個ID,見下文),我可以縮短這個代碼如下(功能2爲例):
function myFunction2(a, b, c, .......p) {
//Lots of code then
var z, myArray = [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p];
for (z in myArray) {
$("#id" + (z + 1)).html(myArray[z]);//used z to avoid name collision with a through p
}
}
有什麼辦法,我可以使用jQuery做下面的事情?
function myFunction2(a, b, c, .......p) {
//Lots of code then
$("#id1, #id2, ....... #id16").html(a, b, c.......p);
}
我的想法是,每個id將與html()語句中的每個參數匹配。我在搜索中沒有找到任何這方面的例子。我不認爲這個代碼(如果可能的話)甚至會比上面的for循環更好,但是它節省了幾行代碼,因此是個問題。感謝您的任何回答
你是如何調用該函數?如果你可以傳入數組,事情可能會更簡單。見Douglas Crockford。另外,如果一個函數具有「大量代碼」,它可能會更好地分解成幾個更小的函數。 – isherwood
我會堅持使用for循環。即使有可能做你提出的建議,試圖在兩個單獨的列表中排列16個元素看起來像是一個維護噩夢。 。 。 – ernie
您可以幾乎與第三個例子完全相同。只需要像下面這樣將一個函數傳遞給'.html()':var a = arguments; $(「#id1,#id2,...#id16」)。html(function(i){return a [i]});' –