如何将此for循环集成到此函数中

时间:2016-01-19 12:08:13

标签: javascript

尝试为插件添加一些自定义。

我有以下循环:

for (var i = 0; i < key_name.Length; i++) {
  a.extend(a.ZeEditor.DEFAULTS.itemKeys,
           {[key_name[i]]: "font-size: 15px; color: black;"});
}

我需要在这个函数中运行它(否则'a'将不会被定义)

function(a) {
    "use strict";
     a.extend(a.ZeEditor.DEFAULTS, {
         itemKeys: {
             [key_name[0]]: "font-size: 15px; color: black;"
         }
     }),
     a.ZeEditor.PLUGINS.itemKey = function(b) {...},
     a.ZeEditor.RegisterCommand("itemKey", {...}),
     a.ZeEditor.DefineIcon("itemKey", {...})
});

无论我把它放在哪里,最常见的2个都没有发生(所以编码不会因任何原因而执行)或者我得到错误Uncaught SyntaxError: Unexpected token for

我在想我需要为这个编码添加一个新函数并将其放在那里,但是我甚至找不到放置函数而没有错误的位置。或者什么也没发生 e.g。

...
a.ZeEditor.PLUGINS.itemKey = function(b) {...},
a.ZeEditor.RegisterCommand("itemKey", {...}),
a.ZeEditor.DefineIcon("itemKey", {...}),
function KeysLoop() {
    for (var i = 0; i < key_name.Length; i++) {
        a.extend(a.ZeEditor.DEFAULTS.itemKeys, {[key_name[i]]: "font-size: 15px; color: black;"});
    }
}
});

这不会引发错误但也不会循环遍历数组

我还在学习javascript,这有点超出我的知识,所以我需要一些帮助。

修改

抱歉,我遗漏了一些东西

key_name只是一个简单的数组     key_name = ["text1", "text2", "text3",]

循环是这样的,我不必手动将所有数组值作为对象选项,例如

a.extend(a.ZeEditor.DEFAULTS, {
    itemKeys: {
        "text1": "font-size: 15px; color: black;",
        "text2": "font-size: 15px; color: black;",
    }  

此外,我不知道数组值或有多少数据,所以我需要遍历数组。

当放在函数的底部时,for循环中的这一行工作正常,所以我知道该行有效

...
a.ZeEditor.PLUGINS.itemKey = function(b) {...},
a.ZeEditor.RegisterCommand("itemKey", {...}),
a.ZeEditor.DefineIcon("itemKey", {...}),
a.extend(a.ZeEditor.DEFAULTS.itemKeys, {[key_name[1]]: "font-size: 15px; color: black;"}); 
  // this line ^^
});

1 个答案:

答案 0 :(得分:0)

function KeysLoop()之外定义function(a){},然后调用KeysLoop()。因为你宣布你的功能但从不调用它。

function KeysLoop(a) {
     for (var i = 0; i < key_name.Length; i++) {
        a.extend(a.ZeEditor.DEFAULTS.itemKeys, {[key_name[i]]: "font-size: 15px; color: black;"});
     }
}

 ...
 a.ZeEditor.PLUGINS.itemKey = function(b) {...},
 a.ZeEditor.RegisterCommand("itemKey", {...}),
 a.ZeEditor.DefineIcon("itemKey", {...}),
 KeysLoop(a);
});

PD:按惯例的函数名称在camelCase中,以小写字母开头,例如:keysLoop()