有没有办法克隆变量名?您可以在下面看到(名称 a1 )
$(document).ready(function() {
name = "a1"; // This "NAME" is a1
})
function name() { // USING "NAME"
$("#test" + name).keydown(function(a) { // USING "NAME"
13 == a.keyCode && load + name(); // USING "NAME"
})
}
function load + name() {
$("#blue" + name).show(); // USING "NAME"
localStorage. + name; // USING "NAME"
}
所以我想减少javasript的大小。因为,如果我不这样做。因此会有很多这样的命令(虽然只是名称不同)。任何 a1,a2,a3,a4 .......... z8,z9
我认为除了复制和粘贴之外别无他法。并替换每个名称。但我希望,还有其他方法
function a1() {
$("#testa1").keydown(function(a) {
13 == a.keyCode && loada1();
})
}
function a2() {
$("#testa2").keydown(function(a) {
13 == a.keyCode && loada2();
})
}
// TO .................................
function z9() {
$("#testz9").keydown(function(a) {
13 == a.keyCode && loadz9();
})
}
答案 0 :(得分:1)
考虑将这些值移动到输入本身的data-*
属性。像这样的结构:
<input type="text" data-name="a1">
$('input').keydown(function(a) {
13 == a.keyCode && load( $(this).attr('data-name') );
});
function load(name){
$("#blue" + name).show(); // USING "NAME"
localStorage.name; // USING "NAME"
}
附注,注意localStorage. + name
;我没有得到你在那条线上想要达到的目标。
现在,对于危险练习。请不要遵循这一点,它可能是语言的一个方面,但并不意味着你应该使用它。
使用window[<functionName>]
在全局范围内定义动态函数。
var name = 'a1';
window[name] = function(){
$("#testz9").keydown(function(a) {
13 == a.keyCode && window['load'+name]();
});
};
window['load'+name] = function(){
$("#blue" + name).show(); // USING "NAME"
localStorage. + name; // USING "NAME"
};
答案 1 :(得分:1)
您可以为函数使用参数。
优点:只有一个功能,可以重复使用多个元素。
function go(n) {
$("#test" + n).keydown(function(a) {
13 == a.keyCode && load(n);
});
}
function load(n) {
$("#blue" + n).show();
localStorage[n];
}
答案 2 :(得分:0)
当你有很多函数执行几乎相同的工作时,这是一个非常明确的指示,你应该只有一个带参数的函数。这样,如果你想改变你的功能,你不需要改变几十个而只需要改变一个。
function register(name) {
$("#test" + name).keydown(function(a) {
13 == a.keyCode && load(name);
})
}
function load(name) {
$("#blue" + name).show();
localStorage.getItem(name); // do something with it
}
// Register all these methods
["a1", "a2", ..., "z9"].forEach(register);
答案 3 :(得分:0)
首先,为要附加keydown
处理程序的所有元素分配一个公共类。说loading
。这允许您在一个处安装所有处理程序,然后查看ID以确定名称。
当您知道名称时,请调用一个名为参数的共享load()
函数。
$('.loading').keydown(function() {
var id = $(this).attr('id');
name name = id.substring(4); // strip 'test'
load(name);
});
function load(name) {
$("#blue" + name).show(); // USING "NAME"
localStorage[name]; // USING "NAME"
}
说明:
不要依赖长度/前缀,而是使用_
或-
之类的字符,并在该字符的位置拆分名称以查找后缀。
您还应该查看HTML5数据属性,以指定要在load()
中使用的密钥。