Javascript 正在检查文本区域中的链接并将其更改为超链接

Javascript 正在检查文本区域中的链接并将其更改为超链接,javascript,Javascript,这里有一个函数: function ShowMessage() { var themessege = document.getElementById("Form").textarea1.value; var dat = new Date(); var fileName = document.getElementById("theFile").value; var image = '<img src="' + fileName + '"/>' + '<b

这里有一个函数:

function ShowMessage()
{
   var themessege = document.getElementById("Form").textarea1.value;
   var dat = new Date(); 
   var fileName = document.getElementById("theFile").value;
   var image = '<img src="' + fileName + '"/>' + '<br>';
   document.getElementById("Form").textarea1.value = ""; 
   document.getElementById("Form").countdown.value = "160"; 
   document.getElementById("theFile").value = "";
   if (themessege==null || themessege=="") 
       {
       alert("There is no text to submit, please fill out the text box");
       return false;
       }

   document.getElementById("blog").innerHTML = document.getElementById("blog").innerHTML + image +  "Guest post: " + themessege + "<br />" +  dat +"<br />";   
}
函数ShowMessage()
{
var themessege=document.getElementById(“表单”).textarea1.value;
var dat=新日期();
var fileName=document.getElementById(“theFile”).value;
var image=''+'
'; document.getElementById(“表单”).textarea1.value=“”; document.getElementById(“表单”).countdown.value=“160”; document.getElementById(“theFile”).value=“”; 如果(themessege==null | | themessege==“”) { 警告(“没有要提交的文本,请填写文本框”); 返回false; } document.getElementById(“blog”).innerHTML=document.getElementById(“blog”).innerHTML+image+“来宾帖子:“+themessege+”
“+dat+”
”; }
我可以从文本区域获取文本,以及用户上传的图像。我想知道如何将文本区域中的字符串划分为子字符串,以检查它们是否以“www”或“htt”开头

这是我到目前为止写的:

function linkify(inputText) {
   var replaceText, replacePattern1, replacePattern2;

   //URLs starting with http://, https://
   replacePattern1 =https;
   replacedText = inputText.replace(replacePattern1, '<a href= ></a>');

   //URLs starting with "www." (without // before it, or it'd re-link the ones done above).
   replacePattern2 = www.;
   replacedText = replacedText.replace(replacePattern2, <a href="http:  ></a>');
   var x = getelementbyid("blog");
   for(var i = 0;i < x.length;i++){
      if(blog.charAt(i) == replacePattern1){
      return replacedText;
      }
   }
   else if(blog.charAt(i) == replacePattern2){
     return replacedText;
   }
}
函数链接(inputText){
变量replaceText、replacePattern1、replacePattern2;
//以http://,https://
replacePattern1=https;
replacedText=inputText.replace(replacePattern1',);
//以“www.”开头的URL(前面没有//或它会重新链接上面的内容)。
替换模式2=www。;
replacedText=replacedText.replace(replacePattern2’);
var x=getelementbyid(“博客”);
对于(变量i=0;i
我知道
字符(I)
只检查1个字母


我找到的大多数答案都是在PHP上找到的,我正在尝试使用JavaScript找到解决方案。

您的linkify函数完全错误。所有变量都包含对不存在的变量的引用!在它们周围加引号,使它们成为字符串

这意味着什么做什么

说输入文本是'https://example.com'并假设您更正了变量,因此
replacePattern1==='https'
找到https并将其替换为。最终产品是什么样子的

replacedText==='://example.com'

第二种替换模式也会发生同样的情况

此外,没有什么比getelementbyid更好的了。是的。JavaScript区分大小写。它返回一个id为的元素,因此不能循环使用它

请在编写JavaScript代码之前先学习JavaScript。另外,请阅读道格拉斯·克罗克福德的文章


回答您的问题,以下是您应该使用的代码:

string.replace(/(https?:\/\/[^\s]+)/g, "<a href='$1'>$1</a>")
string.replace(/(https?:\/\/[^\s]+)/g,“”)
https?
表示http或https。
[^\s]+
表示除空白字符以外的任何字符。
$1
表示整个匹配的URL。

这将允许https和http URL包含字母和数字,并将URL转换为链接


链接功能编写不正确。试试这个

function linkify(inputText) {
var regUrl = /(http:[\d]{0,4}\/\/)?[a-zA-Z0-9\-\.]+\.(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)/;

return inputText.replace(regUrl,'<a href="" />');
}
;
alert(linkify('string containing link www.google.com'));// output: string containing link <a href="" />
函数链接(inputText){
var regUrl=/(http:[\d]{0,4}\/\/)?[a-zA-Z0-9\-\.]+\(com | org | net | mil | edu | com | org | net | mil edu)/;
返回inputText.replace(regUrl.);
}
;
警报(linkify('string containing link www.google.com');//输出:包含链接的字符串

你的函数只是用函数名替换了链接,我不相信这是他想要的。我相信他希望它成为一个可点击的超链接。谢谢,我正在努力学习JavaScript,我的页面运行良好,谢谢你的可点击链接,但是,有没有一种方法可以将文本区域内的字符串转换为子字符串,以便添加if语句来替换以www和http/https开头的字符串?这是我的主要问题…我不明白你想说什么。请举个例子?好的,我有一个测试,用户在输入随机文本时,他会输入一个链接,例如www.google.com或其他什么,当他点击提交链接时,www.google.com显示为普通文本,而不是可点击的链接,我正在试图找出一种在文本区域循环文本的方法,找到以“www”或“hhtp”开头的文本,并将整个文本转换为可点击链接。我希望将其清除。是否希望文本区域中的所有文本都可点击?不,只需以http或www开头的文本,换句话说,只需URL链接