0

我正在编写代码,以便人们可以单击图像,然后可以将单击的坐标记录在下表中。每当我更改某些内容时,图片都会出现并正常工作,或者表格会出现。我无法弄清楚出了什么问题。

这是代码:

var ready1 = prompt("Are you ready? Type yes or no.");
if (ready1 === "yes") {
    var images = [
        ["http://i.imgur.com/UygMnuU.jpg"],
        ["http://i.imgur.com/eq3ruIo.jpg"],
        ["http://i.imgur.com/6JEleqR.jpg"]
    ];
    var focuspoint = [];

    var xcoordinates = [];
    var ycoordinates = [];
    var coords = [];
    i = 0;

    slide = $("#slide");


    // var visualStatic = function () {
    //  setTimeout(function () {
    // static.show();
    //}, 5000);
    // slide.attr("src", images[i++]);
    //};



    slide.click(function () {
        if (i < (images.length + i)) {
            slide.attr("src", images[i++]);

            xcoordinates.push(e.pageX);
            ycoordinates.push(e.pageY);


        }
    }).trigger("click");
}
var cols = ["X Coords", "Y Coords"];
table = document.createElement("table"),
row = document.createElement("tr"),

// populate the coords array
coords.push(xcoordinates);
coords.push(ycoordinates);

// setup for the heading row by looping through columns
for (var c = 0; c < cols.length; c++) {
    td = document.createElement("td");
    td.innerHTML = cols[c];
    row.appendChild(td);
}
table.appendChild(row);

// now the columns are populated
for (var i = 0; i < coords[0].length; i++) {
    row = document.createElement("tr");
    for (var j = 0; j < coords.length; j++) {
        td = document.createElement("td");
        td.innerHTML = coords[j][i];
        row.appendChild(td);
    }
    table.appendChild(row);
}
document.body.appendChild(table);
4

1 回答 1

1

您遇到的一个问题是您将变量“i”用于两件事:跟踪当前图像,并通过坐标表控制迭代。但是只有一个“i”,所以这将是一个问题。

此外,在您的事件处理程序中,您检查“i”是否小于“i”而不是图像列表。这几乎肯定是错误的,因为 JavaScript 数组索引的范围从零到长度小一。(刚刚编辑以注意您添加的是“i”,而不是 1;这看起来确实是错误的。因为“i”总是小于“i”而不是数组的长度(当“i”为正时),if测试总是正确的,最终你会跑出数组的末端。)

于 2013-07-03T14:59:54.583 回答