列表

详情


FED83. 替换链接

描述

页面中存在id=jsContainer的DOM元素。
该DOM元素内会给出一段随机文本,可能包含一些链接,比如https://www.baidu.com,或者 www.baidu.com?from=onlineExam,如果出现链接文本,请给该链接文本加上链接标签,用户点击后能直接在新窗口中打开该链接。
请完成 link 函数,完成该功能
1、container只有纯文本内容,不包含其他dom元素
2、识别所有以http://、https://或者www.开始的链接
3、所有www.开头的链接,默认使用 http 协议
4、所有链接在新窗口打开

原站题解

HTML/CSS/JavaScript 解法, 执行用时: 923ms, 内存消耗: 78028KB, 提交时间: 2020-12-23

{"css":"a {\n    color: #00bc9b;\n}","js":"\n\n\nfunction link() {\n    var jsContainer = document.getElementById('jsContainer');\n    var content = jsContainer.innerHTML;  \n\n    var reg = /(http:\\/\\/)?(https:\\/\\/)?www\\.[\\w=\\?&\\.#]+/g;\n    var newContent = content.replace(reg,function($,$1,$2){\n    var url = '';      \n    if($1 || $2){           url = $;       }\n    else{           url = 'http://'+$;        }      \n    return '<a href=\\\"'+url+'\\\" target=\\\"_blank\\\">'+$+'</a>'  });\n    jsContainer.innerHTML = newContent;\n}","html":"<div id=\"jsContainer\">\n这里会给出一段随机文本,可能包含一些链接,比如https://www.baidu.com,或者 www.baidu.com?from=onlineExam,如果出现链接文本,请给该链接文本加上链接标签,用户点击后能直接在新窗口中打开该链接。\n</div>","libs":[]}

HTML/CSS/JavaScript 解法, 执行用时: 986ms, 内存消耗: 77892KB, 提交时间: 2021-07-18

{"css":"a {\n    color: #00bc9b;\n}","js":"function link() {\n    const ele = document.querySelector('#jsContainer')\n    const text = ele.innerHTML\n    const reg = /((http|https):\\/\\/)?www\\.[\\w\\.]+\\.[\\w]+(\\?[\\S]+)?/g\n    ele.innerHTML = text.replace(reg,function(m,p){\n        let href = p ? m : 'http://' + m\n        return '<a href=\"' + href + '\" target=\"_blank\">' + m + '</a>'\n    })\n}","html":"<div id=\"jsContainer\">\n这里会给出一段随机文本,可能包含一些链接,比如https://www.baidu.com,或者 www.baidu.com?from=onlineExam,如果出现链接文本,请给该链接文本加上链接标签,用户点击后能直接在新窗口中打开该链接。\n</div>","libs":[]}

HTML/CSS/JavaScript 解法, 执行用时: 987ms, 内存消耗: 77916KB, 提交时间: 2021-06-23

{"css":"a {\n    color: #00bc9b;\n}","js":"function link() {\n    document.querySelector('#jsContainer')\n        .innerHTML = \n            document.querySelector('#jsContainer')\n            .innerHTML\n            .replace(/(https?:\\/\\/)?([a-z0-9]+\\.)+[a-z0-9]+(([a-z0-9.?/=#]+))?/gi,function(s,s1,s2){\n    console.log(s);\n    var str = s.slice(0,4);\n    console.log(str)\n    if(str == 'http')\n        return `<a target=\"_blank\" href=\"${s}\">${s}</a>`\n    else if(str == 'www.')\n        return `<a target=\"_blank\" href=\"http://${s}\">${s}</a>`\n    else{\n        var result = s.match(/www\\..+/)\n        if(result) return `${s.slice(0, result.index)}<a target=\"_blank\" href=\"http://${result[0]}\">${result[0]}</a>`\n    }\n    return s\n})\n}","html":"<div id=\"jsContainer\">\n这里会给出一段随机文本,可能包含一些链接,比如https://www.baidu.com,或者 www.baidu.com?from=onlineExam,如果出现链接文本,请给该链接文本加上链接标签,用户点击后能直接在新窗口中打开该链接。\n</div>","libs":[]}

HTML/CSS/JavaScript 解法, 执行用时: 996ms, 内存消耗: 77860KB, 提交时间: 2021-05-29

{"css":"a {\n    color: #00bc9b;\n}","js":"function link() {\n    const el = document.querySelector('#jsContainer');\n    el.innerHTML = el.innerHTML.replace(/(https?:\\/\\/)?www(\\.[a-zA-Z\\d]+)+(:\\d+)?(\\/.*)?(\\?[\\w=&]*)?(#[\\w=]*)?/g, function($0,$1) {\n        console.log($1)\n        let href = $1 ? $0 : ('http://' + $0);\n        return '<a href=\"'+ href +'\" target=\"_blank\">'+ $0 +'</a>'\n    })\n}\n\n","html":"<div id=\"jsContainer\">\n这里会给出一段随机文本,可能包含一些链接,比如https://www.baidu.com,或者 www.baidu.com?from=onlineExam,如果出现链接文本,请给该链接文本加上链接标签,用户点击后能直接在新窗口中打开该链接。\n</div>","libs":[]}

HTML/CSS/JavaScript 解法, 执行用时: 1002ms, 内存消耗: 77856KB, 提交时间: 2021-07-16

{"css":"a {\n    color: #00bc9b;\n}","js":"function link() {\n        var dom = document.getElementById('jsContainer')\n        dom.innerHTML = dom.innerText.replace(/(http(s)?:\\/\\/|www\\.)[\\w\\.\\?\\=\\&#%]+/g, lj => {\n            var bl = /^www/\n            var c = ''\n            bl.test(lj) ? c = 'http://' + lj : c = lj\n            // return `<a href=\" ` +  c  + ` \" target=\"_blank\">` +  lj + ` </a>`\n            return `<a href=\"${c}\" target=\"_blank\">${lj}</a>`\n\n        })\n    }","html":"<div id=\"jsContainer\">\n这里会给出一段随机文本,可能包含一些链接,比如https://www.baidu.com,或者 www.baidu.com?from=onlineExam,如果出现链接文本,请给该链接文本加上链接标签,用户点击后能直接在新窗口中打开该链接。\n</div>","libs":[]}

上一题