2012-07-24 79 views
0

我正在使用JSon數據,我使用dom來顯示數據,我想嵌入一個鏈接到顯示的每個搜索結果,點擊時將該數據實例傳遞到另一個塊並顯示結果在JavaScript函數之間傳遞Json值

我的HTML代碼

<html> 
<body> 
<div id:block 1 > 
<div id:block 2> 
<div id:block 3> 
</body> 

我的JavaScript功能

function addBooks(data) { // the data is a list of JSON objects 


    var listdiv = document.createElement('li'); 
    listdiv.setAttribute('id', 'gBookListDiv'); 
    listdiv.innerHTML = ("Books Found:"); 
    parent.appendChild(listdiv); 



    for(i = 0; i < data.length; i++) { 


     //create each list item 
     var listItem = document.createElement('li'); 
     var link = document.createElement('a'); 
     listItem.setAttribute('id', 'gBookListItem'); 
     parent.appendChild(listItem); 
     link.setAttribute('href', '#'); 
     link.setAttribute('onclick', 'displayBook(data[i])'); 

     listItem.appendChild(link); 
    } 
} 

function displayBook(bookData) { 
    alert(bookData.title); 
    if(document.getElementById("block2").style.display == "block") { 
     document.getElementById("block2").style.display = "none"; 
     document.getElementById("block3").style.display = "block"; 
    } 
    var headerTitle = document.getElementById('book-profile-title-header'); 
    headerTitle.innerHTML = bookData.title; 

    var title = document.getElementById('book-profile-pic'); 
    headerTitle.innerHTML = bookData.title; 

} 

出於某種原因,我不能對數據的實例傳遞給d isplayBook功能。

這是錯誤我得到的鉻

Uncaught ReferenceError: data is not defined

+3

首先,您應該修復可怕的HTML代碼,然後清理JavaScript代碼。例如,如果您只需將函數分配給DOM元素,則不要使用'onclick'屬性。由於您使用[tag:jquery]標記了問題,因此您可能需要考慮實際使用它。 – ThiefMaster 2012-07-24 23:14:41

+0

這只是一個結構,我沒有使用HTML代碼 – 2012-07-24 23:16:11

+0

你正在得到什麼錯誤? – 2012-07-24 23:16:18

回答

3

問題就出在這個代碼:

link.setAttribute('onclick', 'displayBook(data[i])'); 

的處理程序,以便data是沒有定義的全球環境中運行。使用真正的函數:

(function(i) { 
    link.onclick = function() { displayBook(data[i]); } 
})(i); 

的自動執行功能,它周圍有必要建立在每次迭代中單獨i

+0

謝謝你的回答,我對javascript很新,我不太確定如何在你的回答碼中實現我的!我會很樂意爲您提供幫助 – 2012-07-24 23:24:19

+0

只需用第二行代替第一行即可完成作業... – ThiefMaster 2012-07-24 23:27:03

+0

謝謝!有效 – 2012-07-24 23:38:50