我正在尝试将数组作为参数传递给函数
参见 - > fiddle< -
从我测试过的看来,函数似乎是将参数作为字符串而不是数组读取。如何在函数中将数组作为参数传递?
HTML
<button id='arr1'>Click for Array 1</button>
<button id='arr2'>Click for Array 2</button><br/><br/>
<div id='mainstuff'>
<p>When you click button, text should be added</p>
</div>
的jQuery
$(document).ready(function() {
var arr1 = ["one", "two", "three"];
var arr2 = ["eleven", "twelve", "thirteen", "fourteen"];
$('button').click(function() {
var myval = $(this).attr('id');
showstuff(myval);
});
function showstuff(myval) {
var x = "<p>The new text is " + myval[2] + "</p>";
$('#mainstuff').append(x);
}
});
编辑:Fiddle已更新以修复语法错误。
答案 0 :(得分:4)
你不应该这样做。不要试图动态调用变量,即不知道它们的名字。在某些情况下你可以推动它,但这是一个坏主意。
这里最好的解决方案是使用对象和方括号表示法动态地从对象获取值:
var values = {
arr1: ["one", "two", "three"],
arr2: ["eleven", "twelve", "thirteen", "fourteen"]
}
$('button').click(function() {
var myval = this.id;
showstuff(values[myval]);
});
请注意,我已将$(this).attr('id')
更改为this.id
,以提高性能。
答案 1 :(得分:1)
您无法直接传递字符串值以转换为对象。 而是将数组存储为键值对,然后尝试访问它们。
$(document).ready(function () {
var arrays = {
arr1 : ["one", "two", "three"],
arr2 : ["eleven", "twelve", "thirteen", "fourteen"]
};
$('button').click(function () {
var myval = $(this).attr('id');
showstuff(myval);
});
function showstuff(myval) {
var x = "<p>The new text is " + arrays[myVal][2] + "</p>;
$('#mainstuff').append(x);
}
});
答案 2 :(得分:1)
您必须将数组变量存储在以后可以检索的公共对象(或窗口范围,这是不好的做法)中:
var commonObject = new Object();
commonObject.arr1 = ["one", "two", "three"];
commonObject.arr2 = ["eleven", "twelve", "thirteen", "fourteen"];
然后按字符串名称检索该变量:
var myval = $(this).attr('id');
showstuff(commonObject[myval]);