IE中奇怪的Javascript Bug? for循环字符串连接

时间:2012-06-12 12:16:46

标签: javascript internet-explorer for-loop

var pre = '<a href=someDirectoryPath';
var mid = '.aspx">';
var post = '</a>';
var trailHTML = '';
for(i=0;i<trail.length;i++) {
    trailHTML = trailHTML + pre + getURL(trail[i]) + mid + trail[i] + post;
    if(i!=(trail.length-1)) {
    trailHTML += ' > ';
    }
}
document.write(trailHTML);

trail是有效页面的arraylist,如下所示:

['some name', 'another name','yet another name','name']

getURL只接受该名称,并在单词之间添加'-',这是页面名称。这已经过测试和运作。 (例如,getURL('some name')返回'some-name'

问题是,当在IE9中运行(在其他浏览器中未经测试)时,当我将trailHTML写入页面时,我只获得数组中的最后一个元素。为什么是这样?

如果您需要任何澄清,请告诉我......

2 个答案:

答案 0 :(得分:1)

function getURL(txt){
    return txt.replace(/ /g,"-");
}
var trail = ['some name', 'another name','yet another name','name'];

///////////////////////////////////////////////////

var pre = '<a href="someDirectoryPath/'; // changed
var mid = '.aspx">';
var post = '</a>';
var trailHTML = '';
for(i=0;i<trail.length;i++) {
    trailHTML += pre + getURL(trail[i]) + mid + trail[i] + post;
    if(i<trail.length-1)trailHTML+=" &gt; " // changed
}
document.write(trailHTML);

答案 1 :(得分:0)

你的for循环中有一个语法错误:if上的打开“{”没有匹配的“}”。

我在IE9中运行了一个小样本并获得了数组中的所有项目,而不仅仅是您报告的最后一项。这是我跑的:

<script type="text/javascript">
function getURL(s){
    return s.replace(" ", "-");
}

var trail = ['some name', 'another name','yet another name','name'];
var pre = '<a href=someDirectoryPath';
var mid = '.aspx">';
var post = '</a>';
var trailHTML = '';
for(i=0;i<trail.length;i++) {
    trailHTML = trailHTML + pre + getURL(trail[i]) + mid + trail[i] + post;
    if(i!=(trail.length-1)) {
        trailHTML += " > ";
    }
}
trailHTML = trailHTML + getURL(trail[0]);
document.write(trailHTML);
</script>

输出看起来像这样:

  

某个名称&gt;另一个名字&gt;另一个名字&gt; namesome-name

很可能您的问题是由语法错误引起的,或者是数组如何构建/传递到您的函数中。