协助循环创建多个js函数

时间:2016-06-09 04:23:57

标签: javascript php jquery arrays

我有一个正在构建的应用程序,我遇到了问题。我想我可能已经发现了部分问题。基本上我需要一个循环,它创建一个js函数的多个实例。所以它经历了一个循环,其中唯一的项目是图像ID ... 我需要能够通过按钮专门调用这些功能;所以我读了这个,你可以将js函数存储在一个数组中并明确地调用它们......

所以我试图这样做,我知道我的循环正在创建函数的多个实例并将它们存储在我的数组中;但我认为它不能互相告诉他们;因为看起来按钮正在调用最后创建的函数,即使它不应该(但如果它们都是相同的,也许它会这样做)

用我的“测试用例”我可以看到它确实创建了5个独立的功能(我提醒整个阵列只是为了看到) - 所以我想我要么创建它们错了 - 或者我编码我的按钮错了称它们(或两者兼有)

我在这里创建函数数组:

<script>
var ajax_functions = new Array();
</script>

这是我的按钮:

<button type="button" id="<?php echo $ajax_button_id; ?>" onclick="ajax_functions[<?php echo $image_id; ?>](<?php echo $image_id; ?>)" class="btn btn-default">MOVE</button>

这里是我创建函数的地方(剥离了它的内容):

foreach ($popup36_array as $key=>$value) {
$image_id=$key;

$input_name="g_input99_".$image_id;

?>
<script>

var the_img_id="<?php echo $image_id; ?>";

ajax_functions[the_img_id]= function(input_img_id) {

 } //end function
</script>
}//end loop

无论如何 - 我的测试用例有5张图片;第一个图像ID是46,最后一个是50 ......

我怀疑它可能无法区分功能,所以我添加了变量“$ input_name” - 这是一个以图像ID结尾的字符串... 那应该告诉我哪个“功能”正在运行... 并且无论我按哪个按钮,似乎该字符串始终以50 ...

结束

(每个图像有5个图像和一个模态来改变顺序);有一个表单可以更改顺序,我的按钮位于触发js功能的表单末尾

所以在循环中创建了5个模态,5个形式有5个按钮......

我只是不认为我的按钮可以区分功能......

任何人都可以帮忙吗?

非常感谢Gerard

1 个答案:

答案 0 :(得分:0)

首先,你不能调用存储在数组中的javascript函数。

您需要将它们存储在对象文字中,如:

var funcs = {
    func1: function () {
    },
    func2: function () {
    }
}

所以你需要改变循环中的逻辑。

然后当你想从这个对象调用一个函数时,你可以这样做,就像funcs.func1()