-1
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 是一个有效页面的数组列表,如下所示:

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

getURL 只是采用该名称并'-'在单词之间添加一个,即页面名称。这已经过测试并且有效。(例如,getURL('some name')退货'some-name'

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

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

4

2 回答 2

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);
于 2012-06-12T12:55:20.730 回答
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>

输出如下所示:

某个名字 > 另一个名字 > 另一个名字 > namesome-name

您的问题很可能是由语法错误或数组构建/传递到函数的方式引起的。

于 2012-06-12T12:34:59.680 回答