Javascript 如何创建并链接到基于对象的动态页面?
我刚刚了解了如何从Mongo数据库中读取对象并在表中显示它们Javascript 如何创建并链接到基于对象的动态页面?,javascript,html,Javascript,Html,我刚刚了解了如何从Mongo数据库中读取对象并在表中显示它们 for (i = 0; i<teamlist.count;) { strTeam = strTeam + "<tr><td><a href=''>" + teamlist.teams[i].teamName + "</td></tr>"; i = i+1; } strTeam = "<table border='1'>" + strTeam
for (i = 0; i<teamlist.count;) {
strTeam = strTeam + "<tr><td><a href=''>" + teamlist.teams[i].teamName + "</td></tr>";
i = i+1;
}
strTeam = "<table border='1'>" + strTeam + "</table>"
for(i=0;ifirst:a'-元素的href属性是空的,因此链接当然不会带你去任何地方
您使用服务器端的什么技术?当然您可以“动态”创建页面,但您首先必须实现此类页面的原型,然后让其在调用时从链接获取数据。团队的数据必须存储在某个位置(例如数据库)并由页面检索以供显示
如果使用php,可以通过$\u传递每个团队的单个数据,如下所示:
<a href="page.php?team=foo">see foo</a>
小心服务器端应用程序上用户提供的数据!
在使用这些变量之前,您应该以某种方式验证这些$\u GET变量;只需使用google进行SQL注入。因为下面的代码将显示,使用JavaScript生成html是一种痛苦。如果它变得更加完整,也许您应该用google搜索mustache模板
我假设您正在现代浏览器上尝试此操作,并且您的团队列表包含某些信息,如果您需要更多帮助,请告诉我
尝试编写代码时的一个技巧是使用console.log。在Chrome或Firefox中使用firebug插件时,可以按F12打开开发工具。它应该在控制台选项卡中打开。记录对象时,可以在控制台中单击它并检查对象的详细信息
teamlist = {};
teamlist.teams=[
{teamName:"team one",teamDetail:"team one details"},
{teamName:"team two",teamDetail:"team two details"}
];
console.log("teamlist is now:",teamlist);
var myapp = myapp || {};//innit myapp namespace
myapp.createTable=function(){
var df = document.createDocumentFragment(),
table = document.createElement("table"),
i = 0,row,cel;
while(i<teamlist.teams.length){
cel = this.cel(teamlist.teams[i]);
row = this.row();
row.appendChild(cel);
table.appendChild(row);
i++;
}
table.onclick=this.toggleDetails;
document.body.appendChild(table);
};
myapp.row = function(){
return document.createElement("tr");
};
myapp.cel = function(paramObj){
var cel = document.createElement("td"),//<=notice the comma, adding
//more variables without having to specify "var"
detail = document.createElement("div");
detail.appendChild(document.createTextNode(paramObj.teamDetail));
detail.style.display="none";
detail.style.position="relative";
detail.style.top="10px";
detail.style.left="-50px";
detail.style.backgroundColor="#AAAAAA";
cel.appendChild(document.createTextNode(paramObj.teamName));
cel.appendChild(detail);
return cel;
};
myapp.toggleDetails = function(e){
if(e.target.tagName!=="TD")
return;
var details = e.target.getElementsByTagName("div")[0];
var visible = details.style.display;
visible = (visible==="inline")?"none":"inline";
details.style.display=visible;
};
myapp.createTable();
teamlist={};
团队列表=[
{teamName:“一队”,teamDetail:“一队详情”},
{团队名称:“第二团队”,团队细节:“第二团队细节”}
];
log(“团队列表现在是:”,团队列表);
var myapp=myapp | |{};//innit myapp名称空间
myapp.createTable=函数(){
var df=document.createDocumentFragment(),
table=document.createElement(“表”),
i=0,行,cel;
然而(我想团队是否已经有了自己的页面可以链接?或者你的问题真的是关于路由的(而不是javascript和HTML)?我没有创建他们自己的页面。我觉得这可以动态完成?你可以动态完成,但你需要一个url,该url将显示团队详细信息或发送JSON数据,以便你的脚本可以获取。如果你的团队列表对象中已经有团队详细信息,你不需要为此重新连接到服务器。谢谢伟大的答案。
teamlist = {};
teamlist.teams=[
{teamName:"team one",teamDetail:"team one details"},
{teamName:"team two",teamDetail:"team two details"}
];
console.log("teamlist is now:",teamlist);
var myapp = myapp || {};//innit myapp namespace
myapp.createTable=function(){
var df = document.createDocumentFragment(),
table = document.createElement("table"),
i = 0,row,cel;
while(i<teamlist.teams.length){
cel = this.cel(teamlist.teams[i]);
row = this.row();
row.appendChild(cel);
table.appendChild(row);
i++;
}
table.onclick=this.toggleDetails;
document.body.appendChild(table);
};
myapp.row = function(){
return document.createElement("tr");
};
myapp.cel = function(paramObj){
var cel = document.createElement("td"),//<=notice the comma, adding
//more variables without having to specify "var"
detail = document.createElement("div");
detail.appendChild(document.createTextNode(paramObj.teamDetail));
detail.style.display="none";
detail.style.position="relative";
detail.style.top="10px";
detail.style.left="-50px";
detail.style.backgroundColor="#AAAAAA";
cel.appendChild(document.createTextNode(paramObj.teamName));
cel.appendChild(detail);
return cel;
};
myapp.toggleDetails = function(e){
if(e.target.tagName!=="TD")
return;
var details = e.target.getElementsByTagName("div")[0];
var visible = details.style.display;
visible = (visible==="inline")?"none":"inline";
details.style.display=visible;
};
myapp.createTable();