单击循环中的函数不发送所有变量

时间:2013-04-04 07:45:04

标签: javascript kendo-ui

在过去的两天里,我花了很多时间试图找到解决方案,但是我的经验不足已经阻碍了。

我正在开发一个图像映射资源。用户打开包含动态URL的模态窗口。 从我的代码中可以看出,我已经测试了一个警告,它会抛出不同的ID(正确的结果),但同样不适用于url窗口。我只获得一个url变量,而不是2,因为我有警报弹出窗口。

我确信这是一个结构性的东西,但任何指针都会受到赞赏。

function tree(tree_id, mappos) {
    this.tree_id = tree_id;
    this.mappos = mappos;
}

var mytreelist = [];
mytreelist[0] = new tree(18, "708,290,736,319"),
mytreelist[1] = new tree(272, "134,143,163,172");

for (i = 0; i < mytreelist.length; i++) {

    document.write("<div id = \"" + mytreelist[i].tree_id + "\" > <area class = \"maplink\"     
    shape= \"rect\" coords=\"" + mytreelist[i].mappos + "\" data-role=\"button\" href=\"#\" 
    id=\"" + mytreelist[i].tree_id + "\"/></div>");

    treeid = this.mytreelist[i].tree_id;

    $("#" + treeid).click(function() {
        var win = $("#window").data("kendoWindow");
        thing = this.id;
        alert("tree number " + thing);
        win.center();
        win.open();
    });
 }
    $(document).ready(function() {
        $("#window").kendoWindow({
            height: "400px",
            draggable: false,
            resizable: false,
            title: "Centered Window",
            modal: true,
            visible: false,
            width: "600px",
            content: "check.php?tree_id=" + treeid,
            title: "Async Window Content"
        });
    });

行。试图简化这里的想法并使用机箱功能。我仍然有同样的问题。我可以访问数组元素id但不能访问它的值。

var mytreelist = ['elm', 'oak', 'pine'];

function create() {
    for (var i = 0; i < mytreelist.length; i++) {
    mytreelist[i] = function(tree) {
    var newtree = this.mytreelist.value; //this is not correct?
    return function() {

    alert("tree = " + newtree);

      };
  }(i);
 }
}

function run() {
  for (var i = 0; i < 5; i++) {
  mytreelist[i]();
  }
}

create();
run();    

0 个答案:

没有答案