2015-11-11 184 views
1

我有一個從json文件中提取數據的表。我試圖創建一個功能,當你雙擊任意一行時,一個窗口會彈出,並且該窗口將包含被點擊的行的一些信息。這裏是我的一些代碼:JavaScript彈出窗口空白

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

     rowData = data[i]; 


     rowsHtml += 

      "<tr class='mainTableRow'><td>" + rowData.ID 
      + "</td><td>" + rowData.FirstName 
      + "</td><td>" + rowData.LastName 
      + "</td><td>" + rowData.DOB 
      + "</td><td>" + rowData.Gender 
      + "</td></tr>"; 


    var tbody = document.getElementById("data"); 
    tbody.innerHTML+= rowsHtml; 


    //This gets the values for the pop up window 
    var tablerows = document.getElementsByClassName("mainTableRow"); 
    for(var j=0; j<tablerows.length; j++){ 
    tablerows[j].addEventListener("dblclick",function(){ 

     //This is a function that creates a popup window 
    //openWindow just contains a window.open function with the name of 
    //my file and a few other parameters such as height/width of the window 
     openWindow("myhtmlfile.html"); 

     //gets textboxes from another HTML file 
     var idvalue = document.getElementById("idtextbox"); 
     var dobvalue = document.getElementById("dobtextbox"); 

    //Adds values inside textbox. Should be same values for the clicked    //row. 
     idvalue.value = rowData.ID; 
     dobvalue.value = rowData.DOB; 

}) 
} 

} 

我有2個單獨的HTML文件。一個在其中定義了表格。另一個HTML文件用於彈出窗口,並在其中定義了幾個文本框。 (這些值將寫入文本框內)。問題是,當我雙擊該行時,彈出窗口打開,但值爲空。文本框應該與我點擊的行具有相同的值。我收到一條錯誤消息:idvalue爲空。如果我將文本框移動到具有表格的同一個HTML文件中,它不會給我那個錯誤,但它不會給我單擊的行的信息,只有最後一行的信息。 JavaScript文件包含在兩個HTML文件中,但不能解決問題。

如何解決此問題,而不使用jQuery或任何其他JS庫?任何幫助,將不勝感激。因爲「文件」引用當前頁面

回答

0

你的問題在於以下幾點:

var idvalue = document.getElementById("idtextbox"); 
var dobvalue = document.getElementById("dobtextbox"); 

你用得到的元素您正在使用的窗口中的ID「idtextbox」和「dobtextbox」,而不是您打開的窗口。

,如果你只是想看到一個彈出窗口中的信息更簡單的方法就是做:

alert("ID:" + String(rowData.ID) + " DOB:" + String(rowData.DOB)); 

這將打開您所需的文本彈出對話框。

如果你絕對需要打開一個新的窗口,對於這一點,請看HTML POST: Window.open and pass parameters by post method

還是什麼scrayne提及。

+0

感謝您的幫助! –

+0

沒問題,很高興我能幫到你。 – Mocking