2016-03-24 17 views
0

私は大きなJavascriptプログラムを作成しており、テーブルを満たすためにコンテンツを定義する配列を取ってHTMLテーブルを動的に作成する関数を作っています。関数を次のように呼び出すといいと思います。文字列と関数内の変数を別の関数に渡す

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

それぞれの行は、作成しているテーブルの異なる列の内容になっています。

tableConstructor関数にデータが送信される前に常にchangingVariableが評価されるため、テーブル全体が同じデータで各列の下にいっぱいになるという問題があります。

changingVariablechangingVariableを使用する関数/配列は、tableConstructor関数の内部ではなく、以前は評価されていないと評価する必要があります。どのように私はこれを動作させることができるか誰も知っていますか?上記の4つの例の行のそれぞれについて動作させたいと思います。ここでは、これまでに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

関連する問題