Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript将文本转换为链接将返回错误 函数断言(){ 文件、写入、应用(文档、参数); } var testLink=“google.com”; 函数makeIntoLink(链接){ 如果(链接匹配(/^[a-zA-Z0-9]+(.com/)){ 链接。替换(链接“+”链接+”); } 返回链接; } 断言(makeIntoLink(testLink));_Javascript_Web - Fatal编程技术网

使用JavaScript将文本转换为链接将返回错误 函数断言(){ 文件、写入、应用(文档、参数); } var testLink=“google.com”; 函数makeIntoLink(链接){ 如果(链接匹配(/^[a-zA-Z0-9]+(.com/)){ 链接。替换(链接“+”链接+”); } 返回链接; } 断言(makeIntoLink(testLink));

使用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

它写下来,但不是以链接的形式。只是“google.com”,没有链接。可能出了什么问题?

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;
}