奇怪:单击“修改”,都显示“张十”、…… aUpdate.onclick = function() { toUpdateUser(users[i]); }因爲你的user是個對象,對象是按地址存放的,他只有一個值,[for(var item in users)]這個循環最好能改成用數組下標的形式,onclick結果如上。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 谢谢您!还是不行,按照您的方法将代码修改为:<%@ page language="java" import="java.util.*" pageEncoding="gb18030"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <script type='text/javascript' src='/CRUDtoUser/dwr/interface/userDAO.js'></script> <script type='text/javascript' src='/CRUDtoUser/dwr/engine.js'></script> <script type='text/javascript' src='/CRUDtoUser/dwr/util.js'></script> <script type="text/javascript"> function initUser() { userDAO.getAllUsers(displayUser); } function displayUser(users) { var tbody = document.getElementById("tbody"); for(var i = 0; i < users.length; i++) { var tr = document.createElement("tr"); var tdUsername = document.createElement("td"); tdUsername.innerText = users[i].username; tr.appendChild(tdUsername); var tdAddress = document.createElement("td"); tdAddress.innerText = users[i].address; tr.appendChild(tdAddress); var tdEmail = document.createElement("td"); tdEmail.innerText = users[i].email; tr.appendChild(tdEmail); // DOWN: var tdUpdate = document.createElement("td"); var aUpdate = document.createElement("a"); aUpdate.innerText = "修改"; aUpdate.setAttribute("href", "#"); aUpdate.onclick = function() { toUpdateUser(users[i]); } tdUpdate.appendChild(aUpdate); tr.appendChild(tdUpdate); // UP : tbody.appendChild(tr); } } function toUpdateUser(user) { dwr.util.setValues(user); } window.onload = function() { initUser(); } </script> </head> <body> <table border="1"> <thead> <tr> <th>username</th><th>address</th><th>email</th><th colspan="2">操作</th> </tr> </thead> <tbody id="tbody"> </tbody> </table> <p></p> <p></p> username:<input type="text" id="username"/><br> address :<input type="text" id="address"/><br> email :<input type="text" id="email"/><br> userid :<span id="userid">-1</span><br><br> <input type="button" value="保存"/> </body></html>后,运行程序,单击任何一个“修改”链接,没有任何反应,没有任何信息被填入到下面的文本框与span标签中,IE也没有提示任何的错误。第一个需求“需求:访问index.jsp页面,就会显示出数据库中User表中的数据。”已经成功实现了,说明用 for(var item in users) { var user = users[item];这种方法遍历得到的每个对象是不同的(也就说明这些对象各自引用了不同的地址),为什么在订阅一个链接的单击事件: aUpdate.onclick = function() { toUpdateUser(user); }时,所引用的就都是最后的那个对象呢? 你用的是同一個對象的,只不過給他在循環裏面賦了不同的值,但是你循環結束之後這個對象的值就是最後一個user了,因爲的你的onclick寫的都是toUpdateUser(user),而這個user在畫面顯示結束之後就只有一個值的,所以,你的所有的修改都顯示的最后一個對象。只要能把這些對象區分開就行了。 jiaxsheng,谢谢您!将代码改成用数组下标的形式<%@ page language="java" import="java.util.*" pageEncoding="gb18030"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <script type='text/javascript' src='/CRUDtoUser/dwr/interface/userDAO.js'></script> <script type='text/javascript' src='/CRUDtoUser/dwr/engine.js'></script> <script type='text/javascript' src='/CRUDtoUser/dwr/util.js'></script> <script type="text/javascript"> function initUser() { userDAO.getAllUsers(displayUser); } function displayUser(users) { var tbody = document.getElementById("tbody"); for(var i = 0; i < users.length; i++) { var tr = document.createElement("tr"); var tdUsername = document.createElement("td"); tdUsername.innerText = users[i].username; tr.appendChild(tdUsername); var tdAddress = document.createElement("td"); tdAddress.innerText = users[i].address; tr.appendChild(tdAddress); var tdEmail = document.createElement("td"); tdEmail.innerText = users[i].email; tr.appendChild(tdEmail); // DOWN: var tdUpdate = document.createElement("td"); var aUpdate = document.createElement("a"); aUpdate.innerText = "修改"; aUpdate.setAttribute("href", "#"); aUpdate.onclick = function() { toUpdateUser(users[i]); } tdUpdate.appendChild(aUpdate); tr.appendChild(tdUpdate); // UP : tbody.appendChild(tr); } } function toUpdateUser(user) { alert(user.username); dwr.util.setValues(user); } window.onload = function() { initUser(); } </script> </head> <body> <table border="1"> <thead> <tr> <th>username</th><th>address</th><th>email</th><th colspan="2">操作</th> </tr> </thead> <tbody id="tbody"> </tbody> </table> <p></p> <p></p> username:<input type="text" id="username"/><br> address :<input type="text" id="address"/><br> email :<input type="text" id="email"/><br> userid :<span id="userid">-1</span><br><br> <input type="button" value="保存"/> </body></html>之后,每个“修改”链接的单击事件所关联的方法中,执行的就是users[1]、users[2]、users[3]、users[4]、……,这样,这些user对象就分开了,可是,上面我提到了,单击任何一个“修改”链接,什么效果也没有,这时我在toUpdateUser()方法中加了一条调试语句: function toUpdateUser(user) { alert(user.username); dwr.util.setValues(user); }这时,再单击任何一个“修改”链接,弹出一个对话框,标题:错误内容:出现了运行时间错误。是否要进行调试?行:64错误:'username' 为空或不是对象。进入调试,显示 alert(user.username);这一行有错误。再次请教! 你用的users的作用範圍多大?全局的?還是局部的?因爲看不到js怎麽寫的,有些問題只是猜測。 您好,所有的js代码就都在这个index.jsp文件中了,users变量是局部的。 问题已解决,谢谢您,请看此贴:http://topic.csdn.net/u/20080930/17/95e5c994-bfd4-4c38-a107-47446346fc94.html java求教!! mysql client中输出表格无法对齐如何解决? ExtJs GridPanel、PagingToolbar事件 关于extjs访问json的问题 一个简单javascript问题 关于年月日的下拉列表 请问我要在<fram中的执行一个新的文件。请问如何实现。 真的对Javascript忍无可忍了! 哪位大神知道这种图片模式是怎么实现的 淘淘商城项目 上传图片时,页面显示上传失败,但是控制台可以输出图片正确路径 怎样读取字符串中的节点信息 这段代码不错,就是在 FireFox2.0 下不工作, 请高手帮我改改,有重谢,【100分,只给答案最好的一个人】
<%@ page language="java" import="java.util.*" pageEncoding="gb18030"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type='text/javascript' src='/CRUDtoUser/dwr/interface/userDAO.js'></script>
<script type='text/javascript' src='/CRUDtoUser/dwr/engine.js'></script>
<script type='text/javascript' src='/CRUDtoUser/dwr/util.js'></script>
<script type="text/javascript">
function initUser() {
userDAO.getAllUsers(displayUser);
}
function displayUser(users) {
var tbody = document.getElementById("tbody");
for(var i = 0; i < users.length; i++) {
var tr = document.createElement("tr");
var tdUsername = document.createElement("td");
tdUsername.innerText = users[i].username;
tr.appendChild(tdUsername);
var tdAddress = document.createElement("td");
tdAddress.innerText = users[i].address;
tr.appendChild(tdAddress);
var tdEmail = document.createElement("td");
tdEmail.innerText = users[i].email;
tr.appendChild(tdEmail);
// DOWN:
var tdUpdate = document.createElement("td");
var aUpdate = document.createElement("a");
aUpdate.innerText = "修改";
aUpdate.setAttribute("href", "#");
aUpdate.onclick = function() {
toUpdateUser(users[i]);
}
tdUpdate.appendChild(aUpdate);
tr.appendChild(tdUpdate);
// UP :
tbody.appendChild(tr);
}
}
function toUpdateUser(user) {
dwr.util.setValues(user);
}
window.onload = function() {
initUser();
}
</script>
</head>
<body>
<table border="1">
<thead>
<tr>
<th>username</th><th>address</th><th>email</th><th colspan="2">操作</th>
</tr>
</thead>
<tbody id="tbody">
</tbody>
</table>
<p></p>
<p></p>
username:<input type="text" id="username"/><br>
address :<input type="text" id="address"/><br>
email :<input type="text" id="email"/><br>
userid :<span id="userid">-1</span><br><br>
<input type="button" value="保存"/>
</body>
</html>
后,运行程序,单击任何一个“修改”链接,没有任何反应,没有任何信息被填入到下面的文本框与span标签中,IE也没有提示任何的错误。
第一个需求“需求:访问index.jsp页面,就会显示出数据库中User表中的数据。”已经成功实现了,说明用 for(var item in users) {
var user = users[item];这种方法遍历得到的每个对象是不同的(也就说明这些对象各自引用了不同的地址),为什么在订阅一个链接的单击事件: aUpdate.onclick = function() {
toUpdateUser(user);
}时,所引用的就都是最后的那个对象呢?
因爲的你的onclick寫的都是toUpdateUser(user),而這個user在畫面顯示結束之後就只有一個值的,所以,你的所有的修改都顯示的最后一個對象。只要能把這些對象區分開就行了。
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type='text/javascript' src='/CRUDtoUser/dwr/interface/userDAO.js'></script>
<script type='text/javascript' src='/CRUDtoUser/dwr/engine.js'></script>
<script type='text/javascript' src='/CRUDtoUser/dwr/util.js'></script>
<script type="text/javascript">
function initUser() {
userDAO.getAllUsers(displayUser);
}
function displayUser(users) {
var tbody = document.getElementById("tbody");
for(var i = 0; i < users.length; i++) {
var tr = document.createElement("tr");
var tdUsername = document.createElement("td");
tdUsername.innerText = users[i].username;
tr.appendChild(tdUsername);
var tdAddress = document.createElement("td");
tdAddress.innerText = users[i].address;
tr.appendChild(tdAddress);
var tdEmail = document.createElement("td");
tdEmail.innerText = users[i].email;
tr.appendChild(tdEmail);
// DOWN:
var tdUpdate = document.createElement("td");
var aUpdate = document.createElement("a");
aUpdate.innerText = "修改";
aUpdate.setAttribute("href", "#");
aUpdate.onclick = function() {
toUpdateUser(users[i]);
}
tdUpdate.appendChild(aUpdate);
tr.appendChild(tdUpdate);
// UP :
tbody.appendChild(tr);
}
}
function toUpdateUser(user) {
alert(user.username);
dwr.util.setValues(user);
}
window.onload = function() {
initUser();
}
</script>
</head>
<body>
<table border="1">
<thead>
<tr>
<th>username</th><th>address</th><th>email</th><th colspan="2">操作</th>
</tr>
</thead>
<tbody id="tbody">
</tbody>
</table>
<p></p>
<p></p>
username:<input type="text" id="username"/><br>
address :<input type="text" id="address"/><br>
email :<input type="text" id="email"/><br>
userid :<span id="userid">-1</span><br><br>
<input type="button" value="保存"/>
</body>
</html>
之后,每个“修改”链接的单击事件所关联的方法中,执行的就是users[1]、users[2]、users[3]、users[4]、……,这样,这些user对象就分开了,可是,上面我提到了,单击任何一个“修改”链接,什么效果也没有,这时我在toUpdateUser()方法中加了一条调试语句: function toUpdateUser(user) {
alert(user.username);
dwr.util.setValues(user);
}这时,再单击任何一个“修改”链接,弹出一个对话框,标题:错误内容:出现了运行时间错误。
是否要进行调试?行:64
错误:'username' 为空或不是对象。进入调试,显示 alert(user.username);这一行有错误。再次请教!
因爲看不到js怎麽寫的,有些問題只是猜測。