使用JavaScript将文本转换为链接将返回错误 函数断言(){ 文件、写入、应用(文档、参数); } var testLink=“google.com”; 函数makeIntoLink(链接){ 如果(链接匹配(/^[a-zA-Z0-9]+(.com/)){ 链接。替换(链接“+”链接+”); } 返回链接; } 断言(makeIntoLink(testLink));
它写下来,但不是以链接的形式。只是“google.com”,没有链接。可能出了什么问题?使用JavaScript将文本转换为链接将返回错误 函数断言(){ 文件、写入、应用(文档、参数); } var testLink=“google.com”; 函数makeIntoLink(链接){ 如果(链接匹配(/^[a-zA-Z0-9]+(.com/)){ 链接。替换(链接“+”链接+”); } 返回链接; } 断言(makeIntoLink(testLink));,javascript,web,Javascript,Web,它写下来,但不是以链接的形式。只是“google.com”,没有链接。可能出了什么问题?replace返回替换字符串的版本;管柱未就地更换。因此link=link.replace…而不是简单的link.replacelink.replace不会原位更改文本,而是生成一个新字符串。尝试将行从link.replace(link…更改为link=link.replace(link..类似link.replace的函数实际上并不替换字符串中的内容,而是返回一个包含替换内容的新字符串。例如: funct
replace
返回替换字符串的版本;管柱未就地更换。因此link=link.replace…
而不是简单的link.replace
link.replace
不会原位更改文本,而是生成一个新字符串。尝试将行从link.replace(link…
更改为link=link.replace(link..
类似link.replace的函数实际上并不替换字符串中的内容,而是返回一个包含替换内容的新字符串。例如:
function assert() {
document.write.apply(document, arguments);
}
var testLink = "google.com";
function makeIntoLink(link) {
if (link.match(/^[a-zA-Z0-9]+(.com)/)) {
link.replace(link, "<a href=\"http://www." + link+ "\">" + link + "<\/a>");
}
return link;
}
assert(makeIntoLink(testLink));
但是,在您的情况下,您根本不需要使用string.replace(…)
,而是可以执行以下操作:
function replaceText() {
var searchText = ".com";
var link = "google.com";
var newLink = link.replace(searchText, ".co.uk");
alert(link); // Output = "google.com"
alert(newLink); // Output = "google.co.uk"
}
函数makeIntoLink(链接){
如果(链接匹配(/^[a-zA-Z0-9]+(.com/)){
//link.replace(link,“+link+”);正如其他人所说,replace
不会更改变量,它只会返回一个新的变量。但在这种情况下,您并不是真的想替换某个变量,您只是想在它周围连接一些东西
依我看,您不需要replace
功能:
function makeIntoLink(link) {
if (link.match(/^[a-zA-Z0-9]+(.com)/)) {
//link.replace(link, "<a href=\"http://www." + link+ "\">" + link + "<\/a>"); <-- OLD
link = "<a href=\"http://www." + link+ "\">" + link + "<\/a>"; // <-- NEW
}
return link;
}
函数makeIntoLink(链接){
如果(链接匹配(/^[a-zA-Z0-9]+(.com/)){
链接='';
}
返回链接;
}
(我还删除了你的\”
转义符,它使用了JS字符串文字和HTML属性的不同引号字符。这使它不那么难读,IMHO)。应该是..^[a-zA-Z0-9-]+(.com/)
…因为域可以包含连字符,但在本例中这不是问题。哇,你的答案与我的答案惊人地相似……我发誓我没有复制。如果你尝试一下,它实际上可以接受不止一个参数。谢谢你的答案。@David:这很有趣。很高兴知道。我很惊讶地看到从IE6到Firefox都能这样做从Opera到Chrome。但是它做到了。唯一不能处理多个参数的是alert函数,但我找到了一个简单的解决方法:只需制作另一个函数,将arguments数组插入for循环,并警告arguments[索引]调用时。@David:只要你知道你在一个未知的领域,因此它可能无法可靠地跨浏览器工作,即使它现在可以在大多数浏览器上工作:如果你真的想这样做的话,我可能只做document.write(Array.prototype.join.call(arguments)”)
,而不是依赖它:如果你真的想这样做的话,我可能只做document.write(Array.prototype.join.call(arguments.),)
。
function makeIntoLink(link) {
if (link.match(/^[a-zA-Z0-9]+(.com)/)) {
link = '<a href="http://www.' + link + '">' + link + '</a>';
}
return link;
}