我正在接受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%
但是没有解决它。
谢谢!
答案 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");