使用javascript将word替换为另一个word?

使用javascript将word替换为另一个word?,javascript,google-maps,Javascript,Google Maps,我正在使用谷歌地图获取两个地点之间的距离和时间 这个很好用 然而,我想用我自己的文本/单词来替换从谷歌地图api中吐出的一些文本/单词 例如:我想用ETA: 这是我的javascript代码,用于替换单词: <script> function myFunction() { var str = document.getElementsByClassName("adp-summary").innerHTML; var res = str.replace("about"

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

这个很好用

然而,我想用我自己的文本/单词来替换从谷歌地图api中吐出的一些文本/单词

例如:我想用
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>

函数myFunction(){
var str=document.getElementsByClassName(“adp摘要”).innerHTML;
var res=str.replace(“关于”,“预计到达”);
document.getElementsByClassName(“adp摘要”).innerHTML=res;
}
但不幸的是,这没有任何作用,也不能用ETA替换about这个词

这是我的全部代码:

有人能就这个问题提出建议吗


提前感谢。

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

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

while(str.indexOf("about") > -1)
{
//do replace here 
}
或者更好的选择是使用正则表达式

请参阅此处的更多信息:

如注释中所述,
document.getElementsByCassName
返回一个与选择器匹配的值,这就是您无法设置
.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: ')
}
var adp summary=document.getElementsByClassName(“adp summary”);
对于(变量i=0;i
document.getElementsByClassName(“adp summary”).innerHTML
失败,因为
getElementsByClassName()
的返回值是一个节点列表,而不是单个元素。我强烈建议使用jQuery。让事情变得容易多了@弗里德·里查米迪,所以没有办法取代这些文字?@william,我没这么说。我只是指出了你当前代码中的错误。当然,您可以迭代一个节点列表,然后依次处理每个元素。当我修复您的fiddle(包括Google Maps Javascript API v3)时,我会得到以下Javascript错误:
Uncaught TypeError:无法读取未定义的属性“replace”
什么不起作用?在ADP上循环?字符串替换?字符串替换。效果很好。。。。现在是时候了解它为什么起作用了:)。。你就是那个人…我建议你学习正则表达式。但是,请看JSFIDLE中不是我的代码!我认为这与我的代码没有任何关系。对不起,我不打算为你写代码。我刚刚向您展示了为什么您的替换无法正常运行,以及一种正确运行的方法。没有人要求您“为我编写代码”。。。。我已经写了我自己的代码,它在显示信息等方面工作得非常好。。。但是,如果你想回答一个关于STO的问题,你需要使用问题中给定的代码,并以该代码为基础进行回答,而不仅仅是写一个含糊不清的代码,然后告诉我你已经回答了这个问题。祝你好运,以这样的态度获得28个以上的声誉。