javascript - js ( jquery ) 在初始化第二个函数之前将字符串中的变量名称传递给第二个函数

标签 javascript jquery

我有两个脚本+两个json。

脚本one.html

 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");

脚本二.js

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

这会在 one.html 上生成错误,因为 myAjaxVar 尚不存在。

是否可以将myOptStr作为字符串传递,以便在加载的two.js中将其解释为string+var?

即在two.js中,myOpts被解释为

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

最佳答案

您可以将 myOptStr 属性设置为函数,并将函数作为第一个参数传递给 myFun,而不是字符串。

这是一个例子

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);
          ...
    }
}

关于javascript - js ( jquery ) 在初始化第二个函数之前将字符串中的变量名称传递给第二个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46363764/

相关文章:

javascript - 计算 DOM 字符串中的单词数

javascript - 将类添加到具有多个数据属性的多个元素

javascript - 从下拉选项中删除 "selected"

javascript - 阻止加载 DOM 对象

javascript - 防止大型菜单项在悬停时自动隐藏

Javascript IE 转换矩阵计算

javascript - 缓冲区读写 float

javascript - 砖石 + 同位素 + imagesLoaded 未定义 yii

javascript - 为什么我不能 append 一个元素,删除它,然后再次 append 相同的元素?

javascript 将 id 值获取到变量中