2010-08-30 22 views
0

我有一個split()函數的問題。 我得到的錯誤未定義的,但它不知道爲什麼:/jQuery - 拆分()數組只有一個匹配= undefined

更容易與工作的例子來解釋: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'); 
      } 
    }); 

} 

提前感謝! 彼得

回答

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。

1

你已經有行記錄你的值數組,是難以添加行記錄其他變量?

c1_arr = c1.split(';'); 

這裏創建的陣列是[「字體顏色:#FF0000」,「」] - 有因爲有後沒有空白第二元件的「;」在輸入字符串中。

然後當你調用:

values[1][i]= c1_arr[i].split(':'); 

c1_arr [1]是空字符串,所以值[1] [1]是僅具有一個元素,空字符串的數組。

值[1] [1] [0] - >空字符串 值[1] [1] [1] - >未定義的(沒有第二個元件)