2012-07-24 71 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