我的split()
功能有问题。
我得到错误未定义,但它不知道原因:/
通过一个工作示例更容易解释:http://www.jsfiddle.net/V9Euk/415/
$(function start()
{
css('#div { font-color:#ff0000; border:1px solid #00ff00; }', '#div_2 { font-color:#ff0000; }', '#line2 { font-color:#00ffff; }');
});
function css(c0,c1,c2)
{
if(c0 != 'undefined')
{
c0_selector = c0.match(/^.*{/);
c0 = c0.replace(/^.*{/,'');
c0 = c0.replace(/}/,'');
c0_arr = c0.split(';');
values = new Array();
values[0] = new Array();
values[0][0] = c0_selector;
for (i = 1; i < c0_arr.length; i++)
{
values[0][i]= c0_arr[i].split(':');
}
}
if(c1 != 'undefined')
{
c1_selector = c1.match(/^.*{/);
c1 = c1.replace(/^.*{/,'');
c1 = c1.replace(/}/,'');
c1_arr = c1.split(';');
values[1] = new Array();
values[1][0] = c1_selector;
for (i = 1; i < c1_arr.length; i++)
{
values[1][i]= c1_arr[i].split(':');
}
}
$('#log').append(''+values[0][0]+'<br />');
$('#log').append(''+values[0][1][0]+'<br />');
$('#log').append(''+values[0][1][1]+'<br />');
$('#log').append('<hr />');
$('#log').append(''+values[1][0]+'<br />');
$('#log').append(''+values[1][1][0]+'<br />');
$('#log').append(''+values[1][1][1]+'<br />');
$.ajax({
url: 'test.php',
type: 'POST',
dataType: 'json',
data: $.toJSON(values),
contentType: 'application/json; charset=utf-8',
success: function() {
alert('success');
}
});
}
提前致谢! 彼得
答案 0 :(得分:1)
你已经有了记录你的数组数组的行,是否很难添加记录其他变量的行?
c1_arr = c1.split(';');
这里创建的数组是['font-color:#ff0000',''] - 有一个空白的第二个元素,因为';'后面没有任何内容在输入字符串中。
然后当你打电话:
values[1][i]= c1_arr[i].split(':');
c1_arr [1]是空字符串,因此值[1] [1]是一个只有一个元素的数组,空字符串。
值[1] [1] [0] - &gt;空字符串 值[1] [1] [1] - &gt; undefined(没有第二个元素)
答案 1 :(得分:1)
您的for循环错误。
c0_arr = c0.split(';');
在此之后你会得到包含东西的索引0和1。
然后你像这样循环:
for (i = 1; i < c0_arr.length; i++)
{
values[0][i]= c0_arr[i].split(':');
}
从索引1开始。 你应该从索引0开始,并像这样填充你的数值数组:
for (i = 0; i < c0_arr.length; i++)
{
values[0][i+1]= c0_arr[i].split(':');
}
然后,您将获得他们所属的所有值。
上一个答案清楚地解释了为什么你会得到未定义的错误BTW。