2016-03-24 158 views
0

我一直在研究一個大型的Javascript程序,並且已經創建了一個函數來動態創建HTML表,通過定義內容來填充表的數組。我想調用函數看起來像這樣:將字符串和函數中的變量傳遞給另一個函數

tableConstructor([ 
    "<p>" + changingVariable + "</p>", 
    "<p>" + arrayOfData[changingVariable] + "</p>", 
    secondFunction(changingVariable), 
    "<button onclick='thirdFunction(" + changingVariable + ")'></button>" 
]); 

每行都是我創建的表中的不同列的內容。

問題在於,在將數據發送到tableConstructor函數之前總是對changingVariable進行評估,以便整個表格最終在每列下方填充相同的數據。

我需要changingVariable和使用changingVariable的函數/數組進行評估,只要它們在tableConstructor函數中但不在之前。有誰知道我能如何讓這個工作?我希望它適用於上面給出的四個示例行中的每一行。這是我目前爲tableConstructor函數本身所得到的結果:

function tableConstructor (content) { 
    tableRows = []; 

    tableDowns = []; 

    for (i in arrayOfData) { 
    tableRows[i] = document.createElement("tr"); 

    containerElement.appendChild(tableRows[i]); 

    for (changingVariable in content) { 
     tableDowns[tableDowns.length] = document.createElement("td"); 

     tableRows[i].appendChild(tableDowns[tableDowns.length - 1]); 

     tableDowns[i * parseInt(content.length) + parseInt(changingVariable)].innerHTML = content[changingVariable]; 
    } 
    } 
} 
+0

難道你不能通過一個函數來生成數據作爲參數,而不是數組嗎? – skypjack

+0

你能舉一個例子說明如何工作? – Nalax

回答

0

使用函數而不是變量。例如:

var changingVariable = 1; 
function f() { 
    return changingVariable++; 
}; 

function tableConstructor (content) { 
    console.log(content); 
}; 

tableConstructor("First: " + f() + " Second: " + f()); 
// -> First: 1 Second: 2 

每次調用函數時都會對函數進行不同的評估。

+0

這不能解決我的問題,'f'函數仍然在'tableConstructor'函數之前被評估。 – Nalax

相關問題