Javascript jQuery-split()数组只有一个匹配项=未定义

Javascript jQuery-split()数组只有一个匹配项=未定义,javascript,jquery,arrays,Javascript,Jquery,Arrays,我对split()函数有问题。 我未定义错误,但不知道原因:/ 用一个工作示例更容易解释: $(函数开始() { css(“#div{font color:#ff0000;border:1px solid#00ff00;}”,“#div#u 2{font color:#ff0000;}”,“#line2{font color:#00ffff;}”); }); 功能css(c0、c1、c2) { 如果(c0!=“未定义”) { c0_选择器=c0.match(/^.*{/); c0=c0.替换(/

我对
split()
函数有问题。 我未定义错误,但不知道原因:/

用一个工作示例更容易解释:

$(函数开始()
{
css(“#div{font color:#ff0000;border:1px solid#00ff00;}”,“#div#u 2{font color:#ff0000;}”,“#line2{font color:#00ffff;}”);
});
功能css(c0、c1、c2)
{
如果(c0!=“未定义”)
{
c0_选择器=c0.match(/^.*{/);
c0=c0.替换(/^.*{/,'');
c0=c0。替换(/}/,“”);
c0_arr=c0.拆分(“;”);
值=新数组();
值[0]=新数组();
值[0][0]=c0_选择器;
对于(i=1;i');
$('#log')。追加('+value[0][1][0]+'
'); $('#log')。追加('+values[0][1][1]+'
'); $('#log')。追加('
'); $('#log')。追加('+values[1][0]+'
'); $('#log')。追加('+values[1][1][0]+'
'); $('#log')。追加('+values[1][1][1]+'
'); $.ajax({ url:'test.php', 键入:“POST”, 数据类型:“json”, 数据:$.toJSON(值), contentType:'application/json;charset=utf-8', 成功:函数(){ 警惕(“成功”); } }); }
提前谢谢!
Peter

您已经有了记录值数组的行,添加记录其他变量的行有那么困难吗

c1_arr = c1.split(';');  
这里创建的数组是['font-color:#ff0000',']-有一个空白的第二个元素,因为输入字符串中的“;”后面没有任何内容

然后当你打电话时:

values[1][i]= c1_arr[i].split(':');
c1_arr[1]是空字符串,因此值[1][1]是一个只有一个元素的数组,即空字符串

值[1][1][0]->空字符串
值[1][1][1]->未定义(没有第二个元素)

您的for循环错误

c0_arr = c0.split(';');
你会得到索引0和1,其中包含之后的内容

然后你像这样循环:

for (i = 1; i < c0_arr.length; i++)
{
   values[0][i]= c0_arr[i].split(':');
}
for (i = 0; i < c0_arr.length; i++)
{
   values[0][i+1]= c0_arr[i].split(':');
}
for(i=1;i
从索引1开始。 您应该从索引0开始,按如下方式填充值数组:

for (i = 1; i < c0_arr.length; i++)
{
   values[0][i]= c0_arr[i].split(':');
}
for (i = 0; i < c0_arr.length; i++)
{
   values[0][i+1]= c0_arr[i].split(':');
}
for(i=0;i
然后你会得到你所有的价值观

前面的答案清楚地解释了为什么会出现未定义的错误