麻烦老师看一下我这个哪里错了

麻烦老师看一下我这个哪里错了

我就这两个文件来处理,但无响应,是哪里错了呀,这个思路可行吗

<%@ page language="java" contentType="text/html;charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>这是职员列表</title>
    </head>
    <body>
        <div style="width:1000px;">
            <button style="width:300px;">员工列表</button>
            <button style="width:300px;">职位列表</button>
            <button style="width:300px;">部门列表</button>
        </div>
        <div id="outstr" style="width:1000px;text-align:center;">
            <!-- 此处输出ajax返回的内容 -->
        </div>
        <script type="text/javascript">
            //获得三个按钮button的数组bList
            var bList=document.getElementsByTagName("button");
            var outstr=document.getElementById("outstr");
            for(var i=0;i<bList.length;i++){
                bList[i].onclick=function(){
                    var xmlhttp;
                    if(window.XMLHttpRequest){
                        xmlhttp=new XMLHttpRequest();
                    }else{
                        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    var url="/ajax/emp_servlet?num=";
                    url=url+i;
                    xmlhttp.open("GET",url,true);
                    url="";
                    xmlhttp.send();
                    xmlhttp.onreadystatechange=function(){
                        if(xmlhttp.readyState==4 && xmlhttp.status==200){
                            var t = xmlhttp.responseText;
                            document.getElementById("outstr").innerHTML=t;
                        }
                    }
                }
            }
        </script>
    </body>
</html>


package com.imooc.ajax;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class empListServlet
 */
@WebServlet("/emp_servlet")
public class empListServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public empListServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        String i=request.getParameter("num");
        List<String> list=new ArrayList<String>();
        if(i.equals("0")) {
            list.add("小红");
            list.add("小明");
            list.add("小白");
        }else if(i.equals("1")) {
            list.add("职员");
            list.add("经理");
        }else {
            list.add("人事部");
            list.add("技术部");
            list.add("无线支持部");
        }
        String outstr="";
        for(var str:list) {
            outstr+="<h3>"+str+"</h3>";
        }
        response.getWriter().println(outstr);
    }
}

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,

因为在for循环里面指定给bList[i].onclick的事件处理程序,也就是onclick那个匿名函数是在for循环执行完成后(用户点击时)才被调用的,function中的i永远是3,也就是for循环遍历后的i值

我们可以在外边设置一个变量赋值一下,如下图所示:

http://img1.sycdn.imooc.com//climg/5f2e7a1a09ac16dc06600406.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • notFoundMoneyE 提问者 #1
    您说的这个js特性我没明白,但按照上面的修改后成功实现了这个编程小结,谢谢
    2020-08-08 21:35:57
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师