0

html代码:

<textarea id="TaAll" rows=11>
 </textarea>

<input type="button" Value="Get Results" 
 onclick="doit();"/>

<textarea id="Tanext" rows=11>
  </textarea>

javascript代码:

window.doit = function ()
{
console.log(document.getElementById("TAall").value);
var containertext=document.getElementById("TAall").value.split("\n");  
    for(var i=0;i< containertext.length;i++)
      {
       var temp=containertext[i+1].split(" "); 
       sbray[i]=eval(temp[1].substring(1,temp[1].length)); 
       op[i]=eval(temp[2].substring(1,temp[2].length)); 


       } 
 Tb = document.frmone.Tanext;


 Tb.value = Tb.value +("\n")+sbray.join("\n")+ ("\n")+"Test";




keysbyValue(); 
}

嗨,在上面的代码中,我有 2 个文本区域。我在 TAall textarea 中写入输入并将其拆分并将其子字符串保存在其他数组 sbray [] 和 op [] 中。在 textarea 中显示 containertext[] 之前的代码工作正常,但是当我尝试在其他 textarea Tbnext 中显示生成的 sbray[] 时,它不起作用。我使用的输入如下,我必须使用这种格式的输入。我想拆分数组并保存所有编号的子字符串。在 sbray[] 中附加左“c”,在 op[] 中附加右“c”:

10
1 c1 c2 //i want to save and split the array starting from this line.
2 c3 c4
3 c5 c12
4 c6 c7
5 c8 c11
6 c9 c10
7 c13 c15
8 c14 c16
9 c17 c18
10 c19 c20

提前致谢

4

3 回答 3

0

你传给TAalldocument.getElementById,但id就是TaAll。你会得到一个错误,因为你要求的对象不存在。

0此外,您正在从to迭代containertext.length-1,但您要求containertext[i+1]. 由于数组中的最大索引是array.length-1(基于 0 的索引),因此containertext[containertext.length]会出错。

于 2012-04-19T19:41:21.613 回答
0

document.getElementById区分大小写。你<textarea>的 id 是TaAll,但你正试图得到它document.getElementById("TAall")

于 2012-04-19T19:27:39.283 回答
0

document.getElementById区分大小写,更改TAallTaAll,它应该工作得更好。

还有一些其他错误,你不应该使用 eval,因为例如 temp 的范围丢失了。

我试图让你的脚本工作,你可以在这里检查它的行为:http: //jsfiddle.net/KjYpX/

编辑:

我终于明白你想要什么了,你可以试试这里的脚本:http: //jsfiddle.net/KjYpX/1/ 它是用一种不那么脏的方式制作的。

这里是解析奇怪格式的函数的详细信息:

var parseMyFormat = function(input){ // we declare a new function
  var sbray=[], op=[]; // declaration of two temporary array
  (input=input.split('\n')).shift(); // we split input in an array called input containing all lines, and then we shift it, it means we remove the first element.

  while(o=input.shift()){ // now, we are gonna make a loop, shift remove the first element but also return it, so we save it in the o variable
    sbray.push((o = o.match(/c(\d+) c(\d+)$/))[1]); //we apply a regexp on o to get the two decimal (\d) ids, it returns an array containing for example ['c1 c2','c1','c2'], we save this array in o (because we will not use o anymore), and we push 'c1' in sbray
    op.push(o[2]); // we push 'c2' in op
  }

  return [sbray, op]; // finally we return both arrays so that you can access them easily
}
于 2012-04-19T19:27:59.097 回答