我使用谷歌地图来获取两个地点之间的距离和时间。
这很好......
但是,我想用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/
有人可以就此问题提出建议吗?
提前致谢。
答案 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?