突出显示 div 中的特定字符串
Highlighted a specific string within a div
我在 jsFiddle 中有一个简单的 HTML 页面,应该打开 .txt 日志文件:
var openFile = function(event) {
var input = event.target;
var reader = new FileReader();
reader.onload = function() {
var text = reader.result;
var node = document.getElementById('output');
node.innerText = text;
};
reader.readAsText(input.files[0]);
};
var status = '<h2><br/><center>I want to change the colour of the >>> @ <<< symbol</center></h2>',
newStatus = status.replace(/@/g, '<span class="atSign">@</span>');
console.log(newStatus);
document.getElementById('output').innerHTML = newStatus;
.atSign {
color: #f90;
}
<center>
<h1>.TXT Log Parser</h1>
</center>
<center>
<h2><input type='file' accept='text/plain' onchange='openFile(event)'></h2>
</center>
<br/>
<div id='output'>...</div>
Link 到 JSFiddle 项目:
https://jsfiddle.net/baivong/60py489j/
正如您在示例中看到的,我可以将输出读取为文本,我什至可以做一些 JS 和 CSS 来更改特定字符串中特定字符的颜色。
由于 .txt 日志的内容不在我的 html 或 js 中,您建议我如何在 #output 中突出显示内容?
在onload
函数中,需要将text
替换为格式化后的HTML。
注意不要将上传的文本作为字符串替换 HTML 单独插入;这将允许执行任意脚本(和其他东西)。相反,将文本拆分为 @
s,并在每个段(最后一段除外)后附加样式 span
。
var openFile = function(event) {
var input = event.target;
var reader = new FileReader();
reader.onload = function() {
var text = reader.result;
var output = document.getElementById('output');
const lines = text.split('\n');
lines.forEach((line) => {
const div = output.appendChild(document.createElement('div'));
const textSplitAroundAt = line.split('@');
textSplitAroundAt.forEach((text, i) => {
div.appendChild(document.createTextNode(text));
if (i === textSplitAroundAt.length - 1) return;
const span = div.appendChild(document.createElement('span'));
span.textContent = '@';
span.className = 'atSign';
});
});
};
reader.readAsText(input.files[0]);
};
.atSign {
color: #f90;
}
<center>
<h1>.TXT Log Parser</h1>
</center>
<center>
<h2><input type='file' accept='text/plain' onchange='openFile(event)'></h2>
</center>
<br/>
<div id='output'>...</div>
我在 jsFiddle 中有一个简单的 HTML 页面,应该打开 .txt 日志文件:
var openFile = function(event) {
var input = event.target;
var reader = new FileReader();
reader.onload = function() {
var text = reader.result;
var node = document.getElementById('output');
node.innerText = text;
};
reader.readAsText(input.files[0]);
};
var status = '<h2><br/><center>I want to change the colour of the >>> @ <<< symbol</center></h2>',
newStatus = status.replace(/@/g, '<span class="atSign">@</span>');
console.log(newStatus);
document.getElementById('output').innerHTML = newStatus;
.atSign {
color: #f90;
}
<center>
<h1>.TXT Log Parser</h1>
</center>
<center>
<h2><input type='file' accept='text/plain' onchange='openFile(event)'></h2>
</center>
<br/>
<div id='output'>...</div>
Link 到 JSFiddle 项目:
https://jsfiddle.net/baivong/60py489j/
正如您在示例中看到的,我可以将输出读取为文本,我什至可以做一些 JS 和 CSS 来更改特定字符串中特定字符的颜色。
由于 .txt 日志的内容不在我的 html 或 js 中,您建议我如何在 #output 中突出显示内容?
在onload
函数中,需要将text
替换为格式化后的HTML。
注意不要将上传的文本作为字符串替换 HTML 单独插入;这将允许执行任意脚本(和其他东西)。相反,将文本拆分为 @
s,并在每个段(最后一段除外)后附加样式 span
。
var openFile = function(event) {
var input = event.target;
var reader = new FileReader();
reader.onload = function() {
var text = reader.result;
var output = document.getElementById('output');
const lines = text.split('\n');
lines.forEach((line) => {
const div = output.appendChild(document.createElement('div'));
const textSplitAroundAt = line.split('@');
textSplitAroundAt.forEach((text, i) => {
div.appendChild(document.createTextNode(text));
if (i === textSplitAroundAt.length - 1) return;
const span = div.appendChild(document.createElement('span'));
span.textContent = '@';
span.className = 'atSign';
});
});
};
reader.readAsText(input.files[0]);
};
.atSign {
color: #f90;
}
<center>
<h1>.TXT Log Parser</h1>
</center>
<center>
<h2><input type='file' accept='text/plain' onchange='openFile(event)'></h2>
</center>
<br/>
<div id='output'>...</div>