用javascript替换另一个单词?

时间:2015-01-05 13:47:52

标签: javascript google-maps

我使用谷歌地图来获取两个地点之间的距离和时间。

这很好......

但是,我想用google map api替换一些在我的页面上吐出的文本/单词和我自己的文字/单词。

例如:我想将about替换为ETA:

这是我的javascript代码替换单词:

<script>

function myFunction() {
    var str = document.getElementsByClassName("adp-summary").innerHTML; 
    var res = str.replace("about", "ETA: ");
    document.getElementsByClassName("adp-summary").innerHTML = res;
}
</script>

但不幸的是,这并没有做任何事情,也没有用ETA代替这个词:。

这是我的整个代码:

http://jsfiddle.net/dvw37ktu/1/

有人可以就此问题提出建议吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

正如评论中所述,document.getElementsByClassName正在返回与您的选择器匹配的HTMLCollection,这就是您无法设置.innerHTML的原因。这可以通过处理集合来修复,比如循环遍历它:

var adpSummary = document.getElementsByClassName("adp-summary");
for (var i = 0; i < adpSummary.length; i++) {
  // Do string replacement on adpSummary[i]
  adpSummary[i].innerHTML = adpSummary[i].innerHTML.replace(new RegExp('about', 'gm'), 'ETA: ')
}

答案 1 :(得分:0)

如果仅使用本机js,则replace仅替换字符串的第一个实例。

你可以在索引检查时循环:

while(str.indexOf("about") > -1)
{
//do replace here 
}

或更好的选择是使用正则表达式。

在此处查看更多信息: Why does javascript replace only first instance when using replace?