我有函数,它显示/应该从textarea输出url(应该只列出url)。目前,它只显示最后一个结果/网址。我如何输出所有的数组/ URL(也许成一个div)。
我的代码:
<textarea id="textarea"></textarea>
<div id="converted_url"></div>
<script type="text/javascript">
$("#textarea").on("change keyup paste", function() {
var text=document.getElementById("textarea").value;
var urlRegex = /(https?:\/\/[^\s]+)/g;
text.replace(urlRegex, function(url) {
var link = '<div><a href="' + url + '">' + url + '</a></div>';
document.getElementById("converted_url").innerHTML=link
})
});
</script>
即时输出(带有此代码):
希望(应该):
我不想附加结果,结果没有更新,因此textarea已更改。即:
最佳答案
每当您更新结果区域时,都将覆盖先前的结果。您需要附加到它。
仅供参考:input
事件是一个广泛的事件,只要对元素的任何输入都会触发。您可能会发现,它比监听多个事件更简单明了。另外,由于您使用的是JQuery,因此最好始终使用它来获取所有DOM引用。
let result = $("#converted_url");
$("#textarea").on("input", function() {
result.html(""); // Reset the output
var urlRegex = /(https?:\/\/[^\s]+)/g;
$("#textarea").val().replace(urlRegex, function(url) {
var link = '<div><a href="' + url + '">' + url + '</a></div>';
// Append the new information to the existing information
result.append(link);
});
});
textarea { width:200px; height:50px;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
(Just type anything in the box to trigger the event.)<br>
<textarea id="textarea">http://google.com blah blah http://facebook.com</textarea>
<div id="converted_url"></div>