Javascript无法用URL替换字符串

时间:2016-09-25 17:17:38

标签: javascript html

我正在接受Udacity的Javascript课程。该项目是建立一份简历。课程和其他问题都没有真正回答我的问题。

有一个resumeBuilder.js文件和一个helper.js文件。 helper.js文件包含需要替换的字符串变量,例如Class<R>。 我将其中一个变量%data%修改为myTwitter,并添加了一个HTML标记,以便在新标签中打开我的网站。

在resumeBuilder.js文件中,我有以下变量:

myWebsite

...应该替换helper.js中此变量中的字符串:

var myWebsite = HTMLwebsite.replace("%data%", "http://learn.website.com");
myWebsite = HTMLwebsite.replace("%website%", "www.website.com");

在index.html页面上,显示网站和链接;但是,当我点击www.website.com的链接时,它会在我的浏览器(Firefox)中打开一个新选项卡,但会将我带到以'%data%'结尾的本地文件路径,例如:

var HTMLwebsite = '<li class="flex-item"><span class="orange-text">website</span><span class="white-text"><a href="%data%" target="_blank">%website%</a></span></li>';

当我将helper.js变量硬编码为以下内容时,它将我引导到我想要的URL:

file:///C:/Users/user/Documents/Education/Javascript/udacity/git_repos/frontend-nanodegree-resume/%data%

我想知道如何不对helper.js进行硬编码,并使用resumeBuilder.js中的replace方法使URL工作。

我还尝试在var HTMLwebsite = '<li class="flex-item"><span class="orange-text">website</span><span class="white-text"><a href="http://learn.website.com" target="_blank">%website%</a></span></li>'; \字符旁边添加/,并在helper.js和resumeBuilder.js中将:更改为%data%但是没有解决它。

谢谢!

2 个答案:

答案 0 :(得分:3)

问题是你的第二个replace不是从前一个结果开始,而是从原始变量开始。所以第一个replace的效果会丢失

更改为:

var myWebsite = HTMLwebsite.replace("%data%", "http://learn.website.com");
myWebsite = myWebsite.replace("%website%", "www.website.com");

答案 1 :(得分:1)

在以下代码中,您将覆盖初始更改

var myWebsite = HTMLwebsite.replace("%data%", "http://learn.website.com");
myWebsite = HTMLwebsite.replace("%website%", "www.website.com");

因此,在此示例中,您的第二个myWebsite将返回到初始HTMLWebsite变量并将%website%替换为您的代码。这会丢弃您在第一个myWebsite声明中应用的更改。

为了解决这个问题,有两种选择:

首先,您可以一次更改一个变量,如下所示:

var myWebsite = HTMLwebsite.replace("%data%", "http://learn.website.com");
myWebsite = myWebsite.replace("%website%", "www.website.com");

或者您可以链接两个替换函数,如下所示:

var myWebsite = HTMLwebsite.replace("%data%","http://learn.website.com")
                           .replace("%website%", "www.website.com");