最初我试图解析通过输入字段上传的文本文件,但我研究的所有内容都使用了HTML5,我不想使用它。因此,我切换到只将文本粘贴到文本区域(输入),并让Javascript解析它,抓取要放置在文本区域的前16个字符(output1),抓取要放在文本区域中的前6个字符(output2)当我这样做时,它只解析第一行我确信这可以用循环来完成,但我还没有完全掌握循环。
我粘贴的数据如下:
A2C6F8-008CFF294
C4F2D1-008CAB312
因此,在这些例子中,output1应该有前六个,output2应该有整行。
这是我的密码。不确定下一步是什么。
function trimit() {
var str = "";
str = document.getElementById("input").value;
var six = str.substr(0,6);
var sixteen = str.substr(0,16);
document.getElementById("output1").value = six;
document.getElementById("output2").value = sixteen; }
<table>
<tr>
<td><div align="center"><textarea name="input" cols="25" rows="10" id="input" onchange="trimit();"></textarea></div></td>
<td><div align="center"><textarea name="output1" cols="7" rows="10" id="output1"></textarea></div></td>
<td><div align="center"><textarea name="output2" cols="20" rows="10" id="output2"></textarea></div></td>
</tr>
</table>
我意识到我的javascript中存在冗余。当我进行故障排除时,我倾向于这样做,以确保我不会错过什么。在我解决这个问题后,我将采用相同的输入,substr 6个字符,然后将所有换行符更改为逗号,这样我就可以将其提交给数据库查询。
这是我第一次在这里发帖,所以如果我错过了你想要的东西,我很抱歉。我已经阅读了成千上万的SO问题,应该知道该放什么。
更新:我本来打算添加一张图片,但显然我还不配,所以这里有一个ASCII模型。
+---------INPUT---------+ +-----OUTPUT1-----+ +-------OUTPUT2-------+
| A2C6F8-008CFF294 | | A2C6F8 | | A2C6F8-008CFF294 |
| C4F2D1-008CAB312 | | C4F2D1 | | C4F2D1-008CAB312 |
| |-->| |-->| |
| | | | | |
| | | | | |
+-----------------------+ +-----------------+ +---------------------+
如果我理解正确,您希望每个输入行的前16个字符显示在其中一个输出框中,而仅前6个字符显示另一个。
你可以使用正则表达式并得到你想要的。因此,首先作为一个例子:
"A2C6F8-008CFF294nC4F2D1-008CAB312".match(/^....../mg) // match first 6 of each line
==> ["A2C6F8", "C4F2D1"]
"A2C6F8-008CFF294nC4F2D1-008CAB312".match(/^................/mg) // match first 16 of each line
==> ["A2C6F8-008CFF294", "C4F2D1-008CAB312"]
所以你的功能是:
function trimit() {
var str = "";
str = document.getElementById("input").value;
var sixes = str.match(/^....../mg);
var sixteens = str.match(/^................/mg);
document.getElementById("output1").value = sixes.join('n');
document.getElementById("output2").value = sixteen.join('n'); }