2017-05-05 40 views
0

我試圖製作一個收件箱,當您第一次加載頁面或單擊按鈕時將顯示消息,但沒有任何顯示。我做錯了什麼?appendChild不會工作?

var inbox = document.getElementsByClassName("inbox").item(0); 
 
var inbox_button = document.getElementById("messages"); 
 
inbox_button.addEventListener("click", showMessages); 
 
showMessages(); 
 

 
function showMessages() { 
 
    var messages = "<?php echo $inbox ?>"; 
 
    var inbox_table = document.createElement("table"); 
 
    var inbox_content = 
 
    "<tr>" + 
 
    "<th>From</th>" + 
 
    "<th>Subject</th>" + 
 
    "<th>Date</th>" + 
 
    "</tr>"; 
 
    for (i = 0; i < messages.length; i++) { 
 
    inbox_content = inbox_content + 
 
     "<tr>" + 
 
     "<td>" + messages[i][1] + "</td>" + 
 
     "<td>" + messages[i][2] + "</td>" + 
 
     "<td>" + messages[i][5] + "</td>" + 
 
     "</tr>"; 
 
    } 
 
    inbox_table.innerHTML = inbox_content; 
 
    inbox.appendChild(inbox_table); 
 
}
<div class="inbox"> 
 
    <button id="messages" type="button">Inbox</button> 
 
    <button id="new_message" type="button">New Message</button> 
 
</div>

+0

你試圖注入PHP代碼這是一個[服務器端語言(https://en.wikipedia.org/wiki/Server-side_scripting),這意味着它有在服務器上運行。您不能在JavaScript中注入PHP代碼,這是一種客戶端語言,並期望它運行。 不知道這是否與你正在嘗試做的事有關,但這是我想呼籲的。 – aug

+0

'var messages =「<?php echo json_encode($ inbox)?>」;' –

+0

該代碼是在一個php文檔中,我使用php從我的數據庫中獲取數據並將其存儲在一個名爲inbox的數組中 – tropic

回答

0

您填充消息作爲字符串var messages = "<?php echo $inbox ?>";,引號之間的,和你的邏輯需要一個2維數組,所以可變$inbox應該返回文本作爲一個Javascript的陣列陣列,例如:

PHP:

$inbox = '[["Text-1-1", "Text-1-2", "Text-1-3"], ["Text-2-1", "Text-2-2", "Text-2-3"]]'; 

的Javascript (直,不包括引號):

var messages = <?php echo $inbox ?>; 
+0

感謝看來我的問題是使用引號和不使用json_encode的組合 – tropic