尝试为插件添加一些自定义。
我有以下循环:
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 ^^
});
答案 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()