2016-12-12 203 views
1

我只是想這樣爲什麼我的內部對象中的值爲空?

{ 
"SW Reqs or Problem Analysis & Estimate": { 
    "Estimate_Days": "I", 
    "Performers": "am", 
    "Percent_Done": "so", 
    "Work_Done": "frustrated", 
    "Remaining_Work": "this", 
    "Comments": "won't" 
}, 
"SW Requirements Doc (in DOORS)": { 
    "Estimate_Days": "WORK", 
    "Performers": "PLEASE", 
    "Percent_Done": "HELP", 
    "Work_Done": "AAHHHHH", 
    "Remaining_Work": "HHHHHH", 
    "Comments": "HHHHHH!!!!" 
}, ...etc 

一個JSON輸出,但我的JSON看起來像這樣

{ 
"SW Reqs or Problem Analysis & Estimate": { 
    "Estimate_Days": "", 
    "Performers": "", 
    "Percent_Done": "", 
    "Work_Done": "", 
    "Remaining_Work": "", 
    "Comments": "" 
}, 
"SW Requirements Doc (in DOORS)": { 
    "Estimate_Days": "", 
    "Performers": "", 
    "Percent_Done": "", 
    "Work_Done": "", 
    "Remaining_Work": "", 
    "Comments": "" 
},...etc 

這裏是我的腳本,

$('#test').click(function(){ 
    var content = {}; 
    var inner = {}; 
    $('.Data').each(function() { 

     var row = $(this).siblings(":first").text(); 
     var id = $(this).attr('id').split('~'); 
     var blah = id[0]; 
     var html = $(this).html(); 
     content[row] = inner; 
     inner[blah] = html; 
    }); 
    var hey = JSON.stringify(content); 
    console.log(hey); 
}); 

它通過<td> S IN迭代一張桌子。如果我只測試 console.log(html)console.log(inner[blah])它輸出我需要的數據從<td> s,但由於某種原因,它顯示爲空白,當我把它,我試圖輸出content

這條線是否存在問題?

content[row] = inner; 
inner[blah] = html; 

是不是正確的方法來創建一個對象,content,與關鍵,row,與值命名inner具有的htmlblah和價值觀另一個對象?這不應該這麼難。我必須失去一些東西。我讀過,如果你有多維對象,你可能會使用JSON,但我無法弄清楚「Estimate_Days」之後的字符串爲什麼是空的。請幫忙。

編輯:這裏是PHP的循環,生成HTML的幾行:

foreach($group_results as $group){ 
    echo '<tr><td class="Row_Title'.$group['Group_ID'].'">'.$group['Group_Name'].'</td>'; 
    echo '<td class="Data" contenteditable="true" name="Estimate_Days~'.$group['Group_ID'].'" id="Estimate_Days~'.$group['Group_ID'].'"></td>'; 
    echo '<td class="Data" contenteditable="true" name="Performers~'.$group['Group_ID'].'" id="Performers~'.$group['Group_ID'].'"></td>'; ...etc 
+0

把你所有的HTML js代碼在https://jsfiddle.net/(和菜單>保存,並給我們的鏈接) –

+0

我會剛剛更新我的問題,並在那裏上傳一切,那裏有一些PHP,我不能真正在小提琴中複製 –

+1

如果只是一個有幾行的靜態示例,那麼看到HTML會很好。 –

回答

2

更新:請注意,您td內容似乎是在你的發佈循環代碼空。很可能這就是爲什麼一切都是空白的,但它掩蓋了與對象引用有關的其他問題。

正如我所提到的,您每次都重複使用inner的相同實例。你真正想要做的是找到每個Row_Title單元格,然後爲其中的每個單元填充剩餘的同胞。我建議下面的JavaScript(用一些示例HTML來演示)。這循環遍歷每個「行」並將外部數組設置爲行標題的標題,然後循環遍歷數據類型的每個兄弟並相應地設置該內部數組的各個屬性。

$('#test').click(function(){ 
 
    var content = {}; 
 
    $('.Row_Title').each(function() { 
 
     var row = $(this).text();  
 
     content[row] = {}; 
 
     $(this).siblings(".Data").each(function() {  \t 
 
     var id = $(this).attr('id').split('~'); 
 
     blah = id[0]; 
 
     var html = $(this).html(); 
 
     content[row][blah] = html;   
 
     }); 
 
    }) 
 
    var hey = JSON.stringify(content); 
 
    console.log(hey); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <td class="Row_Title">Title 1</td> 
 
    <td class="Data" id="Field1~1">Field1Value1</td> 
 
    <td class="Data" id="Field2~1">Field2Value1</td> 
 
    <tr> 
 
    <td class="Row_Title">Title 2</td> 
 
    <td class="Data" id="Field1~2">Field1Value2</td> 
 
    <td class="Data" id="Field2~2">Field2Value2</td> 
 
    </tr> 
 
</table> 
 
<button id="test"> 
 
Go 
 
</button>

+0

哇真棒斯蒂芬,我現在就開始用這個工作。是的,他們是空的,但他們是可以滿足的,我讓用戶輸入東西。 –

+0

我認爲這是行得通的,太棒了,非常感謝你。 –

相關問題