JavaScript弹出窗口空白

时间:2015-11-11 20:54:08

标签: javascript html popup

我有一个从json文件中提取数据的表。我正在尝试创建一个功能,当您双击任何行时,将弹出一个窗口,该窗口将包含单击的行的一些信息。以下是我的一些代码:

 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;

})
}

}

我有两个单独的HTML文件。一个人在其中定义了表格。另一个HTML文件用于弹出窗口,并在其中定义了一些文本框。 (值将写入文本框内)。问题是,当我双击该行时弹出窗口打开,但值为空。对于我单击的行,文本框应具有相同的值。我收到一条错误消息:idvalue为空。如果我将文本框移动到同一个包含表格的HTML文件中,它就不会给我这个错误,但它不会给我我点击的行的信息,只有最后一行的信息。 JavaScript文件包含在两个HTML文件中,但不能解决问题。

如何在不使用jQuery或任何其他JS库的情况下解决此问题?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

我不确定你在这里要做什么,但是

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

不会从新窗口获取值,因为“document”引用了当前页面。以下是有关如何在网页和从该页面打开的窗口之间传递数据的一些信息:

Can I pass a JavaScript variable to another browser window?

答案 1 :(得分:0)

您的问题在于:

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

您正在获取带有ID&#34; idtextbox&#34;的元素。和&#34; dobtextbox&#34;从您正在使用的窗口,而不是您正在打开的窗口。

如果您只想在弹出窗口中查看信息,则更简单的方法是:

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

这将打开一个包含所需文本的弹出对话框。

如果您确实需要为此打开一个新窗口,请查看HTML POST: Window.open and pass parameters by post method

或scrayne提到的。