2

我认为这是非常基本的。不过,我的 javascript 有点生疏,所以我什至可能没有在正确的地方寻找我的问题。我有两个非常相似的数组。我有一个“if 语句”来验证在“for 循环”中使用哪个数组。为此,我认为将所需的数组分配给一个新名称是最简单的。因此:

<body>
<div id="dataLocation">
</div>

<script type='text/javascript'>
oldArray1 = [["name11",51,61,"page11.html"],["name12",151,161,"page12.html"]];
oldArray2 = [["name21",61,71,"page21.html"],["name22",161,171,"page22.html"]];
function loadArray(type){
    var compiledData = "", newArray = new Array();

    if(type=="a") newArray.push(oldArray1);
    else newArray.push(oldArray2);

    for(i=0;i<newArray.length;i++){
         compiledData += "<a  href='" + newArray[i][3] + "'><img src='img.png' title='" + newArray[i][0] + "' style='position: absolute; z-index: 3; left: " + newArray[i][1]-1 + "px; top: " + newArray[i][2]-1 + "px;'></a>";
    }
    document.getElementById('dataLocation').innerHTML = compiledData;
}
window.onload = loadArray("a");
</script>
</body>

当前页面在 Firebug 中运行没有错误并返回结果:

NaNpx;'>

这似乎来自已编译数据的最后一部分。它应该返回一些链接图像。当我在 firebug 中执行 console.log 时,它将 newArray 显示为字符串,而将 oldArray1 显示为数组,所以我猜我的问题就在那里。

请原谅我的无知,任何帮助将不胜感激。

4

1 回答 1

0

分配数组的问题

if(type=="a") newArray = oldArray1;
else newArray = oldArray2;

还有for循环,您必须将此部分更改 left: " + newArray[i][1]-1 + "px; top: " + newArray[i][2]-1 + "px;'

compiledData += "<a  href='" + newArray[i][3] + "'><img src='img.png' title='" + newArray[i][0] + "' style='position: absolute; z-index: 3; left: " + newArray[i][1] + "px; top: " + newArray[i][2] + "px;'></a>";

编辑

     var left_val = newArray[i][1] - 1;
     var top_val =newArray[i][2] - 1;
     compiledData += "<a  href='" + newArray[i][3] + "'><img src='img.png' title='" + newArray[i][0] + "' style='position: absolute; z-index: 3; left: " + left_val + "px; top: " + top_val + "px;'></a>";
于 2013-09-26T18:47:12.677 回答