【发布时间】:2016-11-03 00:42:37
【问题描述】:
我正在尝试学习使用 JavaScript 和 nodejs 来制作 web 应用程序。我完全没有想法,不知道我是否正确地这样做了。所以我想要做的是,当用户点击动态创建的表格的一行时,它会打开一个新的 html 页面,其中包含一堆已经用 json 中的值填充的表单输入。现在我有它,当我点击表格行时,我可以选择 Id,作为测试,我想将它加载到输入字段中,但我将其设置为未定义
使用 fillform 函数创建表格的很大一部分
for (i = 0; i < attendee.length; i++) {
var tr = document.createElement('TR');
if(i % 2 == 0)
{
tr.bgColor = '#E9F2F5';
}
for (var j = 0; j < attendee[i].length; j++) {
var td = document.createElement('TD');
/* if (j != 0) {
td.setAttribute('contenteditable', 'true');
}*/
td.appendChild(document.createTextNode(attendee[i][j]));
tr.appendChild(td);
var currentRow = table.rows[i];
var createClickHandler =
function(tr)
{
return function() {
var cell = tr.getElementsByTagName("td")[0];
var id = cell.innerHTML;
fillForm(id);
};
};
currentRow.onclick = createClickHandler(currentRow);
}
tableBody.appendChild(tr);
}
myTableDiv.innerHTML = "";
myTableDiv.appendChild(table);
}
// this function is included in the html page as a onload function
function fillForm(id)
{
window.open("/populatedForm.html");
document.getElementById("id").value = id;
console.log(id);
}
我要填写的部分html输入。
<div class=container2>
<form method="PUT" action="/process-form" enctype="multipart/form-data" autocomplete="off">
<fieldset>
<label>
ID<br/>
<input id="id" name="id" type="text" value=" " required/>
</label>
<br/>
这就是当我点击表格中的一行时输入的样子。它会打开新的 html 页面,但输入设置为未定义。我没有完成其余的工作,因为我无法让 id 工作。
任何建议都会很棒!谢谢!
【问题讨论】:
-
您有商店或任何东西可以在您的网页上保存状态吗?我认为您无法从代码中准确看出正在发生的事情是,当新网页出现时,它是一个没有状态的新页面。这是单页应用程序吗?如果不是,您真的必须通过 url 发送参数,或者决定以另一种方式将其传递给页面,您也可以使用浏览器存储来存储状态,尽管我强烈建议通过参数传递它。
-
不,我猜我没有存储空间。它不是单页应用程序。但是我确实查看了浏览器存储(我猜你的意思是本地存储),我只是尝试过它,它适用于 Id 输入,我必须为其他输入尝试它。但是使用本地存储是否安全?
-
这是有问题的,我强烈建议在 URL 中将变量作为参数传递并从那里获取它。我认为您遇到的部分问题是将业务逻辑和大量业务逻辑放在前端,而您应该从服务器进行。我建议查看路由服务器端和客户端并从那里完成这个项目。
-
我完全明白你在说什么。我认为您认为服务器端是更专业/更好的方式。我将研究郊游服务器端和客户端,因为我不知道如何做到这一点。谢谢@MorganG
标签: javascript html node.js express web