在输入数组的split()和substring()之后显示在textarea中

时间:2012-04-19 19:12:13

标签: javascript arrays textarea

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 []时它不起作用。我正在使用的输入如下,我必须使用这种格式的输入。我想拆分数组并保存所有no的子串。在[[]:

中,在sbray []和右边的“c”中添加左“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

提前致谢

3 个答案:

答案 0 :(得分:0)

document.getElementById 区分大小写。您的<textarea>个ID为TaAll但您正试图通过document.getElementById("TAall")

获取该ID

答案 1 :(得分:0)

document.getElementById区分大小写,将TAall更改为TaAll,并且应该更好。

还有其他一些错误,你不应该使用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
}

答案 2 :(得分:0)

您已将TAall传递给document.getElementById,但idTaAll。您将收到错误,因为您要求的对象不存在。

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