2017-09-22 6 views
0

2つのスクリプトと2つのjsonがあります。js(jquery)2番目の関数が初期化される前に2番目の関数に文字列の変数名を渡す

スクリプト

var myArr = []; 
    myArr .push (
      {myOptStr:'<option value="'+myAjaxVar.valOne+'">'+myAjaxVar.valtwo+'</option>'}, 
      {myOptStr:'<option value="'+myAjaxVar.valthree+'">'+myAjaxVar.valfour+'</option>'}, 
    ) 
... 
//load two.js via ajax as dataType: "script", 
... 

// Call one 
myFun(myArr[0].myOptStr, "myJsonZero"); 
// Call two 
myFun(myArr[1].myOptStr, "myJsonOne"); 
one.htmlスクリプトは

function myFun(myOpts, myJson) { 
    $.ajax({ 
    url: myJson 
    ... 
    success: function (data) { 
     ... 
     $.each(data, function (abc, myAjaxVar) { 
      myOptrows += myOpts; 
     ... 

myAjaxVarがまだ存在しないので、これはone.htmlにエラーが発生しtwo.js。

myOptStrを文字列として渡すことができるので、ロードされたtwo.jsの文字列+ varとして解釈できますか?

すなわちtwo.jsに、myOptsはあなたが関数にmyOptStrプロパティを設定し、myFunへの最初のパラメータの代わりに文字列として関数を渡すことができ

myOptrows += '<option value="'+myAjaxVar.valOne+'">'+myAjaxVar.valtwo+'</option>' 
+0

*です:私はそれが何を意味するのか見当がつかない。 – trincot

+0

'myOptStr'を関数に設定し、関数を文字列ではなく' myFun'の最初のパラメータとして渡すことができます。 – Titus

答えて

3

として解釈されます。

はここ* "文字列+ VARと解釈" の例

var myArr = []; 
myArr .push (
     { 
      myOptStr : function(myAjaxVar){ 
         return '<option value="'+myAjaxVar.valOne+'">'+myAjaxVar.valtwo+'</option>'; 
        } 
     } 
) 
... 
myFun(myArr[0].myOptStr, "myJsonZero"); 
... 
function myFun(myOpts, myJson) { 
    ... 
    $.each(data, function (abc, myAjaxVar) { 
      myOptrows += myOpts(myAjaxVar); 
      ... 
    } 
} 
+0

傑出した!私はそのアプローチを可能な限り考えなかったでしょう。非常に速い答えがあったことに感謝します。 –

+0

@artvanderlay私は助けることができてうれしいです。がんばろう。 – Titus

関連する問題