使用 javascript 将上传的文本文件的一部分设为可点击
Making a part of an uploaded text file as clickable using javascript
我使用 javascript 上传了一个文件。我想使文本文件的某些部分突出显示并可单击。例如:我想让上传文件中的所有 "hello" 都可以点击并突出显示。
我可以突出显示文本,因为我使用了按钮标签并在 css 中更改了它的背景和边框 属性,但是当单击按钮时我无法执行 onclick 操作。
我这样试过:
var sel_data=$("#sel").text(); // for taking the text file in avariable
var str='hello';
//making the regular expression of str
var re = new RegExp(str,"g");
//For replacing the 'str' by highlighted and clickable 'str'
var re_str="<button class='highlight' id='ty' onclick='alertfunc()' value="+str+">"+str+"</button>"
//replacement of 'str' by highlighted and clickable 'str'
var rep_data=sel_data.replace(re,re_str);
sel_data=rep_data;
//function to be executed when the button will get clicked
function alertfunc() {
alert('yellow');
}
我也这样试过
var str='hello'
var re_str="<button class='highlight' id='ty' value="+str+">"+str+"</button>"
$(".highlight").click(function(){
alert("yellow");
})
或者像这样
var button = document.getElementById("ty");
button.onclick = function(){
alert("yellow");
}
但是有none个可以用,请指教
我通过这个link引用了上面的例子:Html make text clickable without making it a hyperlink
这是通过使用 jQuery 库和现成的代码段 :contains 完成的。
这是您需要的代码:
jQuery.fn.highlight = function (str, className) {
var regex = new RegExp(str, "gi");
return this.each(function () {
$(this).contents().filter(function() {
return this.nodeType == 3 && regex.test(this.nodeValue);
}).replaceWith(function() {
return (this.nodeValue || "").replace(regex, function(match) {
return "<span class=\"" + className + "\">" + match + "</span>";
});
});
});
};
使用此代码段将使单词 "hello" 环绕在您选择的 class 范围内。
现在调用这个函数你需要做的就是:
$(".testHighlight *").highlight("hello", "highlight");
当然你必须设置 .testHighlight class 和 CSS 是这样的:
.testHighlight {
background:yellow;
}
要使它们可点击,您可以使用 jQuery 轻松完成:
$(.testHighlight).click(function(){
//YOUR CODE HERE
});
您可以查看此代码段的更多信息 here。
这里有一些错误。
首先,在文件就绪时执行此代码:
$(document).ready(function(){
// code
});
然后,更新 DOM 中的实际 html :
//replacement of 'str' by highlighted and clickable 'str'
var rep_data=sel_data.replace(re,re_str);
sel_data=rep_data;
$("#sel").html(sel_data); // here
并为点击使用事件委托:
$("#sel").on('click', '.highlight', function(){
alert("yellow");
});
我使用 javascript 上传了一个文件。我想使文本文件的某些部分突出显示并可单击。例如:我想让上传文件中的所有 "hello" 都可以点击并突出显示。
我可以突出显示文本,因为我使用了按钮标签并在 css 中更改了它的背景和边框 属性,但是当单击按钮时我无法执行 onclick 操作。
我这样试过:
var sel_data=$("#sel").text(); // for taking the text file in avariable
var str='hello';
//making the regular expression of str
var re = new RegExp(str,"g");
//For replacing the 'str' by highlighted and clickable 'str'
var re_str="<button class='highlight' id='ty' onclick='alertfunc()' value="+str+">"+str+"</button>"
//replacement of 'str' by highlighted and clickable 'str'
var rep_data=sel_data.replace(re,re_str);
sel_data=rep_data;
//function to be executed when the button will get clicked
function alertfunc() {
alert('yellow');
}
我也这样试过
var str='hello'
var re_str="<button class='highlight' id='ty' value="+str+">"+str+"</button>"
$(".highlight").click(function(){
alert("yellow");
})
或者像这样
var button = document.getElementById("ty");
button.onclick = function(){
alert("yellow");
}
但是有none个可以用,请指教 我通过这个link引用了上面的例子:Html make text clickable without making it a hyperlink
这是通过使用 jQuery 库和现成的代码段 :contains 完成的。 这是您需要的代码:
jQuery.fn.highlight = function (str, className) {
var regex = new RegExp(str, "gi");
return this.each(function () {
$(this).contents().filter(function() {
return this.nodeType == 3 && regex.test(this.nodeValue);
}).replaceWith(function() {
return (this.nodeValue || "").replace(regex, function(match) {
return "<span class=\"" + className + "\">" + match + "</span>";
});
});
});
};
使用此代码段将使单词 "hello" 环绕在您选择的 class 范围内。
现在调用这个函数你需要做的就是:
$(".testHighlight *").highlight("hello", "highlight");
当然你必须设置 .testHighlight class 和 CSS 是这样的:
.testHighlight {
background:yellow;
}
要使它们可点击,您可以使用 jQuery 轻松完成:
$(.testHighlight).click(function(){
//YOUR CODE HERE
});
您可以查看此代码段的更多信息 here。
这里有一些错误。
首先,在文件就绪时执行此代码:
$(document).ready(function(){
// code
});
然后,更新 DOM 中的实际 html :
//replacement of 'str' by highlighted and clickable 'str'
var rep_data=sel_data.replace(re,re_str);
sel_data=rep_data;
$("#sel").html(sel_data); // here
并为点击使用事件委托:
$("#sel").on('click', '.highlight', function(){
alert("yellow");
});