js 如何在ie8下获取选中的option的值

js 如何在ie8下获取选中的option的值

e.currentTarget.selectedOptions[0].label;
没有这个对象

求助

1个回答

 var select=document.getElementById('select的id');
var text=select.options[select.selectedIndex].text//现实的内容
var value=select.value;//值
wjy407199
半城风月半城雪 谢谢
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
求问,如何做一个二级联动的下拉表单(select),每点击一下按钮,表单增加一行。
求问,如何做一个二级联动的下拉表单(select),每点击一下按钮,表单增加一行。我现在的问题是,表单增加后,二级联动就没有效果了。 这是html和表单元素代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/tab.js"></script> <script type="text/javascript" src="js/select2.js"></script> <link href="css/select2.css" rel="stylesheet"/> </style> </head> <body> <br> <table class="table" > <thead> <tr> <th>厚度</th> <th>光度</th> <th>外观</th> </tr> </thead> <tbody> <tr id="a"> <td> <div class="demo"> <div id="city_5"> <select class="prov"></select> <select class="city" disabled="disabled"></select> <select class="dist" disabled="disabled"></select> </div> </div> </td> <td><input type="" name=""></td> <td><input type="" name=""></td> </tr> </tbody> </table> <button onclick="fun()">增加一行</button> <button onclick="del()">删除一行</button> <script type="text/javascript" src="jquery.cityselect.js"></script> <script type="text/javascript"> $(function() { $("#city_5").citySelect({ url: {"citylist": [ {"p": "前端课程", "c": [{"n": "HTML5"}, {"n": "CSS3", "a": [{"s": "HTML"}, {"s": "AJAX"}]}, {"n": "JSON"}]}, {"p": "编程语言", "c": [{"n": "C"}, {"n": "C++"}, {"n": "Python"}, {"n": "PHP"}, {"n": "JAVA"}]}, {"p": "数据库", "c": [{"n": "Mysql"}, {"n": "SqlServer"}, {"n": "Oracle"}, {"n": "Mssql"}]}, ]}, prov: "", city: "", dist: "", nodata: "none" }); }); </script> </body> </html> 这是增加一行的代码 var i = 1; $(".td").each(function(){ $(this).html(i++); }) function fun(){ var $td = $("#a").clone(); //增加一行,克隆第一个对象 $(".table").append($td); var i = 1; $(".td").each(function(){ //增加一行后重新更新序号1,2,3...... $(this).html(i++); }) $("table tr:last").find(":input").val(''); //将尾行元素克隆来的保存的值清空 } function del(){ $("table tr:not(:first):not(:first):last").remove(); //移除最后一行,并且保留前两行 } 这是二级联动代码 /* Ajax 三级省市联动 http://code.ciaoca.cn/ 日期:2012-7-18 settings 参数说明 ----- url:省市数据josn文件路径 prov:默认省份 city:默认城市 dist:默认地区(县) nodata:无数据状态 required:必选项 ------------------------------ */ (function($) { $.fn.citySelect = function(settings) { if (this.length < 1) { return; } ; // 默认值 settings = $.extend({ url: "city.min.js", prov: null, city: null, dist: null, nodata: null, required: true }, settings); var box_obj = this; var prov_obj = box_obj.find(".prov"); var city_obj = box_obj.find(".city"); var dist_obj = box_obj.find(".dist"); var prov_val = settings.prov; var city_val = settings.city; var dist_val = settings.dist; var select_prehtml = (settings.required) ? "" : "<option value=''>请选择</option>"; var city_json; // 赋值市级函数 var cityStart = function() { var prov_id = prov_obj.get(0).selectedIndex; if (!settings.required) { prov_id--; } ; city_obj.empty().attr("disabled", true); dist_obj.empty().attr("disabled", true); if (prov_id < 0 || typeof (city_json.citylist[prov_id].c) == "undefined") { if (settings.nodata == "none") { city_obj.css("display", "none"); dist_obj.css("display", "none"); } else if (settings.nodata == "hidden") { city_obj.css("visibility", "hidden"); dist_obj.css("visibility", "hidden"); } ; return; } ; // 遍历赋值市级下拉列表 temp_html = select_prehtml; $.each(city_json.citylist[prov_id].c, function(i, city) { temp_html += "<option value='" + city.n + "'>" + city.n + "</option>"; }); city_obj.html(temp_html).attr("disabled", false).css({"display": "", "visibility": ""}); distStart(); }; // 赋值地区(县)函数 var distStart = function() { var prov_id = prov_obj.get(0).selectedIndex; var city_id = city_obj.get(0).selectedIndex; if (!settings.required) { prov_id--; city_id--; } ; dist_obj.empty().attr("disabled", true); if (prov_id < 0 || city_id < 0 || typeof (city_json.citylist[prov_id].c[city_id].a) == "undefined") { if (settings.nodata == "none") { dist_obj.css("display", "none"); } else if (settings.nodata == "hidden") { dist_obj.css("visibility", "hidden"); } ; return; } ; // 遍历赋值市级下拉列表 temp_html = select_prehtml; $.each(city_json.citylist[prov_id].c[city_id].a, function(i, dist) { temp_html += "<option value='" + dist.s + "'>" + dist.s + "</option>"; }); dist_obj.html(temp_html).attr("disabled", false).css({"display": "", "visibility": ""}); }; var init = function() { // 遍历赋值省份下拉列表 temp_html = select_prehtml; $.each(city_json.citylist, function(i, prov) { temp_html += "<option value='" + prov.p + "'>" + prov.p + "</option>"; }); prov_obj.html(temp_html); // 若有传入省份与市级的值,则选中。(setTimeout为兼容IE6而设置) setTimeout(function() { if (settings.prov != null) { prov_obj.val(settings.prov); cityStart(); setTimeout(function() { if (settings.city != null) { city_obj.val(settings.city); distStart(); setTimeout(function() { if (settings.dist != null) { dist_obj.val(settings.dist); } ; }, 1); } ; }, 1); } ; }, 1); // 选择省份时发生事件 prov_obj.bind("change", function() { cityStart(); }); // 选择市级时发生事件 city_obj.bind("change", function() { distStart(); }); }; // 设置省市json数据 if (typeof (settings.url) == "string") { $.getJSON(settings.url, function(json) { city_json = json; init(); }); } else { city_json = settings.url; init(); } ; }; })(jQuery);
ajax请求三次为什么就无效了
<p>用ajax 做个二级联动的菜单,改变第一个下拉框中的值,第二个下拉框跟着改变,前三次请求能正确完成,三次以上则不行,在网上搜的答案都试过了,附jsp和servlet在下面。 </p> <pre name="code" class="java">package com.pynon.crawler; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.pynon.base.util.MysqlConnections; public class subtype extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/xml"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); //String supertype = new String(request.getParameter("supertype").getBytes("ISO-8859-1"),"gbk"); String supertype=request.getParameter("supertype"); // System.out.println(supertype); List list = new ArrayList(); Connection conn = MysqlConnections.getConnection(); if (conn != null) { Statement stmt = null; ResultSet rs = null; try { stmt = conn.createStatement(); rs = stmt .executeQuery("select id,classtype from dt_talknet where typename='" + supertype + "';"); while (rs.next()) { Map map = new HashMap(); map.put("id", rs.getInt(1)); map.put("classtype", rs.getString(2)); list.add(map); // System.out.println(rs.getInt(1) + " " + // rs.getString(2)); } } catch (SQLException e) { MysqlConnections.freeConnection(conn); e.printStackTrace(); } finally { try { if (rs != null) { rs.close(); rs = null; } if (stmt != null) { stmt.close(); stmt = null; } } catch (SQLException e1) { e1.getMessage(); } } } if (list.size() &gt; 0) { out.print("&lt;response&gt;"); for (int i = 0; i &lt; list.size(); i++) { Map map = (Map) list.get(i); out.print("&lt;subtypeids&gt;" + map.get("id") + "&lt;/subtypeids&gt;"); out.print("&lt;subtypenames&gt;" + map.get("classtype") + "&lt;/subtypenames&gt;"); } out.print("&lt;/response&gt;"); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }</pre> <p> </p> <pre name="code" class="java">&lt;body&gt; &lt;fieldset&gt;&lt;script type="text/javascript"&gt; var XMLHttpReq; //创建XMLHttpRequest对象 function createXMLHttpRequest() { if(window.XMLHttpRequest) { //Mozilla 浏览器 XMLHttpReq = new XMLHttpRequest(); } else if (window.ActiveXObject) { // IE浏览器 try { XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { } } } } function go4() { createXMLHttpRequest(); var supertype = document.getElementById("supertype").value;//获取选中的大类别. var url = "/pynon/subtype?supertype="+supertype+"&amp;param="+ new Date().getTime(); XMLHttpReq.onreadystatechange = processResponse;//指定响应函数 XMLHttpReq.open("POST",url,true); XMLHttpReq.setRequestHeader("If-Modified-Since","0"); XMLHttpReq.setRequestHeader("Cache-Control","no-cache"); XMLHttpReq.send(null); } function processResponse() { if (XMLHttpReq.readyState == 4) { // 判断对象状态 if (XMLHttpReq.status == 200 || XMLHttpReq.status==0) { // 信息已经成功返回,开始处理信息 updateList(); } else { //页面不正常 window.alert("您所请求的页面有异常。"); } } } function updateList() { clearList(); var subtype = document.getElementById("subtype");//小类别的控件对象 var subtypeids = XMLHttpReq.responseXML.getElementsByTagName("subtypeids"); var subtypenames = XMLHttpReq.responseXML.getElementsByTagName("subtypenames"); var option=null; for(var i=0;i&lt;subtypeids.length;i++) { option = document.createElement("option"); option.value = subtypeids[i].firstChild.nodeValue; option.appendChild(document.createTextNode(subtypenames[i].firstChild.nodeValue)); subtype.appendChild(option); } } function clearList() { var subtype = document.getElementById("subtype"); while(subtype.childNodes.length &gt; 0) { subtype.removeChild(subtype.childNodes[0]); } } &lt;/script&gt; &lt;div&gt;分析模板:&lt;select id="supertype" onChange="go4()" style="width: 100px"&gt; &lt;option&gt;请选择类别&lt;/option&gt; &lt;% Connection cont = MysqlConnections.getConnection(); if (cont != null) { Statement stmt = null; ResultSet rs = null; try { stmt = cont.createStatement(); rs = stmt .executeQuery("select distinct typename from dt_talknet"); while (rs.next()) { %&gt; &lt;option value="&lt;%=rs.getString("typename")%&gt;"&gt;&lt;%=rs.getString("typename")%&gt;&lt;/option&gt; &lt;% } %&gt; &lt;/select&gt; &lt;% if (rs != null) { rs.close(); rs = null; } stmt.close(); stmt = null; MysqlConnections.freeConnection(cont); } catch (SQLException e) { MysqlConnections.freeConnection(cont); e.printStackTrace(); } finally { try { if (rs != null) { rs.close(); rs = null; } if (stmt != null) { stmt.close(); stmt = null; } } catch (SQLException e1) { e1.getMessage(); } } } %&gt; &lt;select style="width: 200px" id="subtype" name="subtype"&gt; &lt;option value="0"&gt;==请选择==&lt;/option&gt; &lt;/select&gt; &lt;/div&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;/fieldset&gt; &lt;/body&gt;</pre> <p> </p> <p> </p><br /><strong>问题补充:</strong><br />lovewhzlq 那个我现在加了,这个问题到底是为什么呀,帮我看看呀!谢谢啦<br /><strong>问题补充:</strong><br />三次都正常执行了,按第四次的时候二级类别的就不动了,还是显示的第三次出来的子类别,如果把浏览器关了,重新来,又是只能执行三次
ajax,jsp,xml二级级联下拉列表
我想做一个简单的ajax,jsp,xml三者结合的二级级联下拉框,就是把数据放到xml文件中 但我不知道如何读取xml中的数据,如何获取list,再按照选中的查找... 我已经做了ajax,jsp从数据库中读取数据。但不知如何修改!还有xml文件放哪儿呢?放到web-inf下吗?还是和jsp放在一起? 请大家帮忙,指点指点 谢谢 index.jsp [code="java"]<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="gb2312"%> <html> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <head> <% String dbDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; //连接sql数据库的方法 String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test"; String userName = "用户名"; String password = "密码"; Connection conn = null; Statement st = null; ResultSet rs = null; List listb = new ArrayList(); try{ Class.forName(dbDriver); } catch(java.lang.ClassNotFoundException e) { e.printStackTrace(); } try { conn = DriverManager.getConnection(url,userName,password); st=conn.createStatement(); String sqlQuery="sql语句"; rs=st.executeQuery(sqlQuery); while (rs.next()) { listb.add(rs.getString(1)); } rs.close(); st.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } %> <script language="javascript"> var XMLHttpReq; //创建XMLHttpRequest对象 function createXMLHttpRequest() { if(window.XMLHttpRequest) { //Mozilla 浏览器 XMLHttpReq = new XMLHttpRequest(); } else if (window.ActiveXObject) { // IE浏览器 try { XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } } //发送请求函数 function sendRequest(url) { createXMLHttpRequest(); XMLHttpReq.open("GET", url, true); XMLHttpReq.onreadystatechange = processResponse;//指定响应函数 XMLHttpReq.send(null); // 发送请求 } // 处理返回信息函数 function processResponse() { if (XMLHttpReq.readyState == 4) { // 判断对象状态 if (XMLHttpReq.status == 200) { // 信息已经成功返回,开始处理信息 updateMenu(); } else { //页面不正常 alert("您所请求的页面有异常。"); } } } //更新菜单函数 function updateMenu() { var res=XMLHttpReq.responseXML.getElementsByTagName("res") /**下面是用innerHTML输出控件内容的一般用法 * var subMenu = ""; * for(var i = 0; i < res.length; i++) { * subMenu = subMenu + " " + res[i].firstChild.data + ""; * } * currentSort.innerHTML = subMenu; **/ var list = document.all.list; list.options.length=0; list.add(new Option("---请选择---","")); for(var i=0;i<res.length;i++){ list.add(new Option(res[i].firstChild.data,res[i].firstChild.data)); } } // 创建级联菜单函数 function showSubMenu(obj) { sendRequest("menu.jsp?sort=" + obj ); /**下面这一句的作用是:每次选择后回到第一个选项**/ // document.all.mli.options[0].selected=true; } </script> </head> <body> <select onchange="showSubMenu(this.options[this.options.selectedIndex].value)" name="select1"> <option value=''>---------请选择----------</option> <% for(int i=0;i<listb.size();i++) { out.println("<option value='"+listb.get(i)+"'>"+listb.get(i)+"</option>"); } %> </select> <select name="list" onchange="if(this.selectedIndex)alert('您选择的是:'+select1.options.value+' 中的 '+this.options[this.options.selectedIndex].value)"> <option value="">---请选择---</option> </select> </body> </html> [/code] menu.jsp [code="java"] HTML code<%@ page contentType="text/html; charset=GB2312" import="java.util.*,java.sql.*" %> <% String sort=new String(request.getParameter("sort").getBytes("iso-8859-1"),"GB2312"); System.out.print("sort="+sort); String dbDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; //连接sql数据库的方法 String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test"; String userName = "用户名"; String password = "密码"; Connection conn = null; Statement st = null; ResultSet rs = null; List lists = new ArrayList(); try{ Class.forName(dbDriver); } catch(java.lang.ClassNotFoundException e) { e.printStackTrace(); } try { conn = DriverManager.getConnection(url,userName,password); st=conn.createStatement(); rs=st.executeQuery("sql语句"); while (rs.next()) { lists.add(rs.getString(1)); } rs.close(); st.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } response.setContentType("text/xml; charset=gb2312"); response.setHeader("Cache-Control", "no-cache"); response.getWriter().write("<?xml version=\"1.0\" encoding=\"gb2312\"?>"); out.println("<response>"); for(int i=0;i<lists.size();i++) { out.println("<res>" + lists.get(i).toString() + "</res>"); } out.println("</response>"); %> [/code]
JSp+ajax用户登录验证
[img]http://dl2.iteye.com/upload/attachment/0088/2001/4ee085e5-47e0-3995-ad42-62e4a53cfc2f.png[/img] 用户登陆界面,想要实现输入账号之后离开输入框就验证该账号是否存在,输入角色、账号、密码之后,点击登录,如果正确就跳转到index.jsp,错误不跳转并且在密码输入框下显示提示信息;有一个没输入就提示,信息也是在密码输入框下。 我现在的问题是:若果什么也不输,点击登录,会闪一下,但闪过之后就是重置了页面。输入正确也是闪一下就重置页面.账号验证没问题,就是登录有问题,但是搞不定,大侠们看看吧! login.jsp [code="java"]<form id="form" name="form" method="post" action="" > <table border="0"> <tr> <td align="right">角色类型:</td> <td><select name="role" id="role" onBlur="checkRole(this)"> <option value="0">-请选择角色-</option> <% List<Role> list = new ArrayList<Role>(); RoleDao dao = new RoleDaoImpl(); list = dao.findAllRoles();//调用实现类的查询全部方法 for (int i = 0; i < list.size(); i++) { Role r = list.get(i); %> <option value="<%=r.getR_id()%>"><%=r.getR_name()%></option> <% } %> </select> </td> <td align="left"> &nbsp; <span id="roleSpan"></span> </td> </tr> <tr> <td align="right">账号:</td> <td> <input type="text" name="number" id="number" onblur="checkNumber(this)"> </td> <td width="256" align="left"> &nbsp; <span id="numberSpan"></span> </td> </tr><!-- 当输入名字后离开输入框即调用--> <tr> <td align="right">密码:</td> <td><input type="password" name="pwd" id="pwd" onBlur="checkPsw(this)" > </td> <td align="left"> &nbsp; <span id="pwdSpan"></span> </td> </tr> <tr> <td align="left">&nbsp;<span id="feedback_info"></span></td> </tr> <tr> <td colspan="1"> <input type="submit" value="登录" onclick="checkLogin(this.form)"/> <input type="button" value="注册" onclick="javascript:window.location.href='User/Register.jsp'"></td> </tr> </table> </form>[/code] login.js [code="java"]var xmlHttp; function createXMLHttpRequest() { if (window.XMLHttpRequest) { var xmlHttp = new XMLHttpRequest(); //mozilla浏览器 } else if (window.ActiveXObject) { try { var xmlHttp = new ActiveX0bject("Msxml2.XMLHTTP"); //IE老版本 } catch (e) { } try { var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE新版本 } catch (e) { } } if (!xmlHttp) { window.alert("不能创建XMLHttpRequest对象实例"); return false; } else return xmlHttp; ////}///////花括号放错地方 } // 检查账号,给出提示信息 function checkNumber(Number) { var numberSpan = document.getElementById("numberSpan"); if (Number.value == "") { numberSpan.innerHTML = "账号必须填写".fontcolor("red"); return false; } else { xmlHttp = createXMLHttpRequest(); //createXMLHttpRequest申明的是局部变量,这里访问不到xmlHttp,要给xmlHttp变量赋值才行 var url="servlet/CheckNumberServlet?number="+Number.value+"&LoginTime="+new Date().getTime(); url = encodeURI(url); //转换码后再传输 xmlHttp.open("GET",url,true);//加时间戳防止IE缓存 //xmlhttp.setRequestHeader( "Content-Type", "text/html;charset=UTF-8" ); xmlHttp.onreadystatechange = handleStateChange1; xmlHttp.send(null); return true; } } function handleStateChange1() { var numberSpan = document.getElementById("numberSpan"); if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { // alert("来自服务器的响应:"+xmlHttp.responseText); if (xmlHttp.responseText == 'true') {///////responseText是字符串,不能和boolean变量直接比较 // alert("存在"); numberSpan.innerHTML = "<img src='Img/g.gif'>"; document.getElementById("feedback_info").innerHTML=""; return true; } else if (xmlHttp.responseText == 'false') {///////responseText是字符串,不能和boolean变量直接比较 // alert("不存在"); numberSpan.innerHTML = "账号不存在".fontcolor("red"); return false; } } else alert("服务器端错误"); } } // 检查密码,给出提示信息 function checkPsw(pswNode) { var spanNode1 = document.getElementById("pswSpan"); var Role= document.getElementById("role"); var Number= document.getElementById("number"); if (pswNode.value == "") { spanNode1.innerHTML = "密码必须填写".fontcolor("red"); return false; } else { pwdSpan.innerHTML = "<img src='Img/g.gif'>"; document.getElementById("feedback_info").innerHTML=""; return true; } } // 检查是否选中角色 function checkRole(selNode) { var index = selNode.selectedIndex;// 获得选中下标 var spanNode1 = document.getElementById("roleSpan"); if (index <= 0) { spanNode1.innerHTML = "必须选择角色".fontcolor("red"); return false; } else { spanNode1.innerHTML = "<img src='Img/g.gif'>"; document.getElementById("feedback_info").innerHTML=""; return true; } } // 检查表单 function checkLogin(o) { var Role=o.role; var Number= o.number; var Pwd= o.pwd; if(checkNumber(Number)&&checkPsw(Psw) &&checkRole(Role)) { xmlHttp = createXMLHttpRequest(); //createXMLHttpRequest申明的是局部变量,这里访问不到xmlHttp,要给xmlHttp变量赋值才行 var url="servlet/CheckLoginServlet?number="+Number.value+"&role="+Role.value+"&pwd="+Pwd.value+"&LoginTime="+new Date().getTime(); url = encodeURI(url); //转换码后再传输 xmlHttp.open("GET",url,true);//加时间戳防止IE缓存 //xmlhttp.setRequestHeader( "Content-Type", "text/html;charset=UTF-8" ); xmlHttp.onreadystatechange = handleStateChange2; xmlHttp.send(null); return true; } else{ document.getElementById("feedback_info").innerHTML="请填写每一项".fontcolor("red"); return false; } } function handleStateChange2() { if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { //alert("来自服务器的响应:" + xmlHttp.responseText); if(xmlHttp.responseText == '0'){ document.getElementById("feedback_info").innerHTML="账号与密码不匹配".fontcolor("red"); return false; } else if(xmlHttp.responseText == '1'){ document.getElementById("feedback_info").innerHTML=""; window.location.href="index.jsp"; return true; } } else alert("服务器端错误"); } }[/code] chuckLoginservlet [code="java"]public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); doPost(request, response);// 调用doPost方法 } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=UTF-8"); String number=""; try { number = new String(request.getParameter("number").getBytes( "ISO-8859-1"), "UTF-8"); } catch (Exception e1) { System.out.println("number为空"); } String role="0"; int rID=0; try { role = new String(request.getParameter("role").getBytes( "ISO-8859-1"), "UTF-8"); rID=Integer.parseInt(role);//把获得的role的值转成整型 } catch (Exception e1) { System.out.println(request.getParameter("role")+"******role"); } String pwd=""; try { pwd = new String(request.getParameter("pwd").getBytes( "ISO-8859-1"), "UTF-8"); } catch (Exception e) { System.out.println(request.getParameter("pwd")+"****pwd"); } // String txt = new String(number.getBytes("ISO-8859-1"), "UTF-8"); // System.out.println(txt+"********"); PrintWriter out = response.getWriter(); User u = new User(); UserDao ud = new UserDaoImpl(); u = ud.findUserByNumber(number);//通过账号找到用户对象 if (u != null) {// 找到该用户 int u_id = u.getU_id();// 获得该用户的ID UserRole ur = new UserRole(); UserRoleDao urd = new UserRoleDaoImpl(); ur = urd.findUserRoleByUserId(u_id);// 找到中间表UserRole的记录 int r_id = ur.getRole().getR_id();// 由Userrole表找到Role表的相对应角色名称 if (r_id==rID && u.getU_password().equals(pwd))// 如果数据中的角色和密码与之对应 { out.write("1");//1表示验证通过 } else { out.write("0");//0表示密码与账号不匹配 } } out.flush(); out.close(); }[/code]
关于寒羽风的WebCalendar.js不能选当天之后的时间
<p><strong><span style="font-size: medium; color: #ff0000;">有谁用过这个日历控件的,这个控件不能选择当日之后的日期,只能选择之前的日子,看了半天看不懂,我贴上代码 <br></span></strong>&lt;!-- <br>var cal; <br>var isFocus=false; //是否为焦点 <br>//以上为  寒羽枫 2006-06-25 添加的变量 <br><br>//选择日期 → 由 寒羽枫 2006-06-25 添加 <br>function SelectDate(obj,strFormat) <br>{ <br>    var date = new Date(); <br>    var by = date.getFullYear()-10;  //最小值 → 50 年前 <br>    var ey = date.getFullYear()+20;  //最大值 → 50 年后 <br>    //cal = new Calendar(by, ey,1,strFormat);    //初始化英文版,0 为中文版 <br>    cal = (cal==null) ? new Calendar(by, ey, 0) : cal;    //不用每次都初始化 2006-12-03 修正 <br>    cal.dateFormatStyle = strFormat; <br>    cal.show(obj); <br>} <br>/**//**//**//**//**//**//**//** <br>* 返回日期 <br>* @param d the delimiter <br>* @param p the pattern of your date <br>2006-06-25 由 寒羽枫 修改为根据用户指定的 style 来确定; <br>*/ <br>//String.prototype.toDate = function(x, p) { <br>String.prototype.toDate = function(style) { <br>/**//**//**//**//**//**//**//* <br>  if(x == null) x = "-"; <br>  if(p == null) p = "ymd"; <br>  var a = this.split(x); <br>  var y = parseInt(a[p.indexOf("y")]); <br>  //remember to change this next century ;) <br>  if(y.toString().length &lt;= 2) y += 2000; <br>  if(isNaN(y)) y = new Date().getFullYear(); <br>  var m = parseInt(a[p.indexOf("m")]) - 1; <br>  var d = parseInt(a[p.indexOf("d")]); <br>  if(isNaN(d)) d = 1; <br>  return new Date(y, m, d); <br>  */ <br>  var y = this.substring(style.indexOf('y'),style.lastIndexOf('y')+1);//年 <br>  var m = this.substring(style.indexOf('M'),style.lastIndexOf('M')+1);//月 <br>  var d = this.substring(style.indexOf('d'),style.lastIndexOf('d')+1);//日 <br>  if(isNaN(y)) y = new Date().getFullYear(); <br>  if(isNaN(m)) m = new Date().getMonth(); <br>  if(isNaN(d)) d = new Date().getDate(); <br>  var dt ; <br>  eval ("dt = new Date('"+ y+"', '"+(m-1)+"','"+ d +"')"); <br>  return dt; <br>} <br><br>/**//**//**//**//**//**//**//** <br>* 格式化日期 <br>* @param   d the delimiter <br>* @param   p the pattern of your date <br>* @author  meizz <br>*/ <br>Date.prototype.format = function(style) { <br>  var o = { <br>    "M+" : this.getMonth() + 1, //month <br>    "d+" : this.getDate(),      //day <br>    "h+" : this.getHours(),     //hour <br>    "m+" : this.getMinutes(),   //minute <br>    "s+" : this.getSeconds(),   //second <br>    "w+" : "天一二三四五六".charAt(this.getDay()),   //week <br>    "q+" : Math.floor((this.getMonth() + 3) / 3),  //quarter <br>    "S"  : this.getMilliseconds() //millisecond <br>  } <br>  if(/(y+)/.test(style)) { <br>    style = style.replace(RegExp.$1, <br>    (this.getFullYear() + "").substr(4 - RegExp.$1.length)); <br>  } <br>  for(var k in o){ <br>    if(new RegExp("("+ k +")").test(style)){ <br>      style = style.replace(RegExp.$1, <br>        RegExp.$1.length == 1 ? o[k] : <br>        ("00" + o[k]).substr(("" + o[k]).length)); <br>    } <br>  } <br>  return style; <br>}; <br><br>/**//**//**//**//**//**//**//** <br>* 日历类 <br>* @param   beginYear 1990 <br>* @param   endYear   2010 <br>* @param   lang      0(中文)|1(英语) 可自由扩充 <br>* @param   dateFormatStyle  "yyyy-MM-dd"; <br>* @version 2006-04-01 <br>* @author  KimSoft (jinqinghua [at] gmail.com) <br>* @update <br>*/ <br>function Calendar(beginYear, endYear, lang, dateFormatStyle) { <br>  this.beginYear = 1990; <br>  this.endYear = 2010; <br>  this.lang = 0;            //0(中文) | 1(英文) <br>  this.dateFormatStyle = "yyyy-MM-dd"; <br><br>  if (beginYear != null &amp;&amp; endYear != null){ <br>    this.beginYear = beginYear; <br>    this.endYear = endYear; <br>  } <br>  if (lang != null){ <br>    this.lang = lang <br>  } <br><br>  if (dateFormatStyle != null){ <br>    this.dateFormatStyle = dateFormatStyle <br>  } <br><br>  this.dateControl = null; <br>  this.panel = this.getElementById("calendarPanel"); <br>  this.container = this.getElementById("ContainerPanel"); <br>  this.form  = null; <br><br>  this.date = new Date(); <br>  this.year = this.date.getFullYear(); <br>  this.month = this.date.getMonth(); <br><br><br>  this.colors = { <br>  "cur_word"      : "#FFFFFF",  //当日日期文字颜色 <br>  "cur_bg"        : "#00FF00",  //当日日期单元格背影色 <br>  "sel_bg"        : "#FFCCCC",  //已被选择的日期单元格背影色 2006-12-03 寒羽枫添加 <br>  "sun_word"      : "#FF0000",  //星期天文字颜色 <br>  "sat_word"      : "#0000FF",  //星期六文字颜色 <br>  "td_word_light" : "#333333",  //单元格文字颜色 <br>  "td_word_dark"  : "#CCCCCC",  //单元格文字暗色 <br>  "td_bg_out"     : "#EFEFEF",  //单元格背影色 <br>  "td_bg_over"    : "#FFCC00",  //单元格背影色 <br>  "tr_word"       : "#FFFFFF",  //日历头文字颜色 <br>  "tr_bg"         : "#666666",  //日历头背影色 <br>  "input_border"  : "#CCCCCC",  //input控件的边框颜色 <br>  "input_bg"      : "#EFEFEF"   //input控件的背影色 <br>  } <br><br>  this.draw(); <br>  this.bindYear(); <br>  this.bindMonth(); <br>  //this.changeSelect(); <br>  //this.bindData(); //2006-12-30 由民工.砖家注释 <br>} <br><br>/**//**//**//**//**//**//**//** <br>* 日历类属性(语言包,可自由扩展) <br>*/ <br>Calendar.language = { <br>  "year"   : [[""], [""]], <br>  "months" : [["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"], <br>        ["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"] <br>         ], <br>  "weeks"  : [["日","一","二","三","四","五","六"], <br>        ["SUN","MON","TUR","WED","THU","FRI","SAT"] <br>         ], <br>  "clear"  : [["清空"], ["CLS"]], <br>  "today"  : [["今天"], ["TODAY"]], <br>  "close"  : [["关闭"], ["CLOSE"]] <br>} <br><br>Calendar.prototype.draw = function() { <br>  calendar = this; <br><br>  var mvAry = []; <br>  //mvAry[mvAry.length]  = '  &lt;form name="calendarForm" style="margin: 0px;"&gt;'; //因 &lt;form&gt; 不能嵌套, 2006-12-01 由寒羽枫改用 Div <br>  mvAry[mvAry.length]  = '  &lt;div name="calendarForm" style="margin: 0px;"&gt;'; <br>  mvAry[mvAry.length]  = '    &lt;table width="100%" border="0" cellpadding="0" cellspacing="1"&gt;'; <br>  mvAry[mvAry.length]  = '      &lt;tr&gt;'; <br>  mvAry[mvAry.length]  = '        &lt;th align="left" width="1%"&gt;&lt;input style="border: 1px solid ' + calendar.colors["input_border"] + ';background-color:' + calendar.colors["input_bg"] + ';width:16px;height:20px;" name="prevMonth" type="button" id="prevMonth" value="&amp;lt;" /&gt;&lt;/th&gt;'; <br>  mvAry[mvAry.length]  = '        &lt;th align="center" width="98%" nowrap="nowrap"&gt;&lt;select name="calendarYear" id="calendarYear" style="font-size:12px;"&gt;&lt;/select&gt;&lt;select name="calendarMonth" id="calendarMonth" style="font-size:12px;"&gt;&lt;/select&gt;&lt;/th&gt;'; <br>  mvAry[mvAry.length]  = '        &lt;th align="right" width="1%"&gt;&lt;input style="border: 1px solid ' + calendar.colors["input_border"] + ';background-color:' + calendar.colors["input_bg"] + ';width:16px;height:20px;" name="nextMonth" type="button" id="nextMonth" value="&amp;gt;" /&gt;&lt;/th&gt;'; <br>  mvAry[mvAry.length]  = '      &lt;/tr&gt;'; <br>  mvAry[mvAry.length]  = '    &lt;/table&gt;'; <br>  mvAry[mvAry.length]  = '    &lt;table id="calendarTable" width="100%" style="border:0px solid #CCCCCC;background-color:#FFFFFF" border="0" cellpadding="3" cellspacing="1"&gt;'; <br>  mvAry[mvAry.length]  = '      &lt;tr&gt;'; <br>  for(var i = 0; i &lt; 7; i++) { <br>    mvAry[mvAry.length]  = '      &lt;th style="font-weight:normal;background-color:' + calendar.colors["tr_bg"] + ';color:' + calendar.colors["tr_word"] + ';"&gt;' + Calendar.language["weeks"][this.lang][i] + '&lt;/th&gt;'; <br>  } <br>  mvAry[mvAry.length]  = '      &lt;/tr&gt;'; <br>  for(var i = 0; i &lt; 6;i++){ <br>    mvAry[mvAry.length]  = '    &lt;tr align="center"&gt;'; <br>    for(var j = 0; j &lt; 7; j++) { <br>      if (j == 0){ <br>        mvAry[mvAry.length]  = '  &lt;td style="cursor:default;color:' + calendar.colors["sun_word"] + ';"&gt;&lt;/td&gt;'; <br>      } else if(j == 6) { <br>        mvAry[mvAry.length]  = '  &lt;td style="cursor:default;color:' + calendar.colors["sat_word"] + ';"&gt;&lt;/td&gt;'; <br>      } else { <br>        mvAry[mvAry.length]  = '  &lt;td style="cursor:default;"&gt;&lt;/td&gt;'; <br>      } <br>    } <br>    mvAry[mvAry.length]  = '    &lt;/tr&gt;'; <br>  } <br>  mvAry[mvAry.length]  = '      &lt;tr style="background-color:' + calendar.colors["input_bg"] + ';"&gt;'; <br>  mvAry[mvAry.length]  = '        &lt;th colspan="2"&gt;&lt;input name="calendarClear" type="button" id="calendarClear" value="' + Calendar.language["clear"][this.lang] + '" style="border: 1px solid ' + calendar.colors["input_border"] + ';background-color:' + calendar.colors["input_bg"] + ';width:100%;height:20px;font-size:12px;"/&gt;&lt;/th&gt;'; <br>  mvAry[mvAry.length]  = '        &lt;th colspan="3"&gt;&lt;input name="calendarToday" type="button" id="calendarToday" value="' + Calendar.language["today"][this.lang] + '" style="border: 1px solid ' + calendar.colors["input_border"] + ';background-color:' + calendar.colors["input_bg"] + ';width:100%;height:20px;font-size:12px;"/&gt;&lt;/th&gt;'; <br>  mvAry[mvAry.length]  = '        &lt;th colspan="2"&gt;&lt;input name="calendarClose" type="button" id="calendarClose" value="' + Calendar.language["close"][this.lang] + '" style="border: 1px solid ' + calendar.colors["input_border"] + ';background-color:' + calendar.colors["input_bg"] + ';width:100%;height:20px;font-size:12px;"/&gt;&lt;/th&gt;'; <br>  mvAry[mvAry.length]  = '      &lt;/tr&gt;'; <br>  mvAry[mvAry.length]  = '    &lt;/table&gt;'; <br>  //mvAry[mvAry.length]  = '  &lt;/from&gt;'; <br>  mvAry[mvAry.length]  = '  &lt;/div&gt;'; <br>  this.panel.innerHTML = mvAry.join(""); <br>  <br>  /**//**//**//******** 以下代码由寒羽枫 2006-12-01 添加 **********/ <br>  var obj = this.getElementById("prevMonth"); <br>  obj.onclick = function () {calendar.goPrevMonth(calendar);} <br>  obj.onblur = function () {calendar.onblur();} <br>  this.prevMonth= obj; <br>  <br>  obj = this.getElementById("nextMonth"); <br>  obj.onclick = function () {calendar.goNextMonth(calendar);} <br>  obj.onblur = function () {calendar.onblur();} <br>  this.nextMonth= obj; <br><br>obj = this.getElementById("calendarClear"); <br>  obj.onclick = function () {calendar.dateControl.value = "";calendar.hide();} <br>  this.calendarClear = obj; <br>  <br>  obj = this.getElementById("calendarClose"); <br>  obj.onclick = function () {calendar.hide();} <br>  this.calendarClose = obj; <br>  <br>  obj = this.getElementById("calendarYear"); <br>  obj.onchange = function () {calendar.update(calendar);} <br>  obj.onblur = function () {calendar.onblur();} <br>  this.calendarYear = obj; <br>  <br>  obj = this.getElementById("calendarMonth"); <br>  with(obj) <br>  { <br>    onchange = function () {calendar.update(calendar);} <br>    onblur = function () {calendar.onblur();} <br>  }this.calendarMonth = obj; <br><br>  obj = this.getElementById("calendarToday"); <br>  obj.onclick = function () { <br>    var today = new Date(); <br>    /**//*calendar.date = today; <br>    calendar.year = today.getFullYear(); <br>    calendar.month = today.getMonth(); <br>    calendar.changeSelect(); <br>    calendar.bindData(); <br>    */ //2006-12-30 由民工.砖家注释 <br>    calendar.dateControl.value = today.format(calendar.dateFormatStyle); <br>    calendar.hide(); <br>  } <br>  this.calendarToday = obj; <br><br>} <br><br>//年份下拉框绑定数据 <br>Calendar.prototype.bindYear = function() { <br>  //var cy = this.form.calendarYear; <br>  var cy = this.calendarYear;//2006-12-01 由寒羽枫修改 <br>  cy.length = 0; <br>  for (var i = this.beginYear; i &lt;= this.endYear; i++){ <br>    cy.options[cy.length] = new Option(i + Calendar.language["year"][this.lang], i); <br>  } <br>} <br><br>//月份下拉框绑定数据 <br>Calendar.prototype.bindMonth = function() { <br>  //var cm = this.form.calendarMonth; <br>  var cm = this.calendarMonth;//2006-12-01 由寒羽枫修改 <br>  cm.length = 0; <br>  for (var i = 0; i &lt; 12; i++){ <br>    cm.options[cm.length] = new Option(Calendar.language["months"][this.lang][i], i); <br>  } <br>} <br><br>//向前一月 <br>Calendar.prototype.goPrevMonth = function(e){ <br>  if (this.year == this.beginYear &amp;&amp; this.month == 0){return;} <br>  this.month--; <br>  if (this.month == -1) { <br>    this.year--; <br>    this.month = 11; <br>  } <br>  this.date = new Date(this.year, this.month, 1); <br>  this.changeSelect(); <br>  this.bindData(); <br>} <br><br>//向后一月 <br>Calendar.prototype.goNextMonth = function(e){ <br>  if (this.year == this.endYear &amp;&amp; this.month == 11){return;} <br>  this.month++; <br>  if (this.month == 12) { <br>    this.year++; <br>    this.month = 0; <br>  } <br>  this.date = new Date(this.year, this.month, 1); <br>  this.changeSelect(); <br>  this.bindData(); <br>} <br><br>//改变SELECT选中状态 <br>Calendar.prototype.changeSelect = function() { <br>  var cy = this.calendarYear;//2006-12-01 由寒羽枫修改 <br>  var cm = this.calendarMonth; <br>//2006-12-30 由民工.砖家修改,减少运算次数 <br>  cy[this.date.getFullYear()-this.beginYear].selected = true; <br>  cm[this.date.getMonth()].selected =true; <br>/**//* <br>  for (var i= 0; i &lt; cy.length; i++){ <br>    if (cy.options[i].value == this.date.getFullYear()){ <br>      cy[i].selected = true; <br>      break; <br>    } <br>  } <br>  for (var i= 0; i &lt; cm.length; i++){ <br>    if (cm.options[i].value == this.date.getMonth()){ <br>      cm[i].selected = true; <br>      break; <br>    } <br>  } <br>*/ <br>//2006-12-30 由民工.砖家注释 <br>} <br><br>//更新年、月 <br>Calendar.prototype.update = function (e){ <br>  this.year  = e.calendarYear.options[e.calendarYear.selectedIndex].value;//2006-12-01 由寒羽枫修改 <br>  this.month = e.calendarMonth.options[e.calendarMonth.selectedIndex].value; <br>  this.date = new Date(this.year, this.month, 1); <br>  this.changeSelect(); <br>  this.bindData(); <br>} <br><br>//绑定数据到月视图 <br>Calendar.prototype.bindData = function () { <br>  var calendar = this; <br>// var dateArray = this.getMonthViewArray(this.date.getYear(), this.date.getMonth()); <br>  //2006-12-30 由民工.砖家修改 在Firefox 下年份错误 <br>  var dateArray = this.getMonthViewArray(this.date.getFullYear(), this.date.getMonth()); <br>var tds = this.getElementById("calendarTable").getElementsByTagName("td"); <br>  for(var i = 0; i &lt; tds.length; i++) { <br>  //tds[i].style.color = calendar.colors["td_word_light"]; <br>  tds[i].style.backgroundColor = calendar.colors["td_bg_out"]; <br>    tds[i].onclick = function () {return;} <br>    tds[i].onmouseover = function () {return;} <br>    tds[i].onmouseout = function () {return;} <br>    if (i &gt; dateArray.length - 1) break; <br>    tds[i].innerHTML = dateArray[i]; <br>    if (dateArray[i] != "&amp;nbsp;"&amp;&amp;new Date().format(calendar.dateFormatStyle) &gt;= <br>          new Date(calendar.date.getFullYear(), <br>                   calendar.date.getMonth(), <br>                   dateArray[i]).format(calendar.dateFormatStyle)){ <br>      tds[i].onclick = function () { <br>        if (calendar.dateControl != null){ <br>          calendar.dateControl.value = new Date(calendar.date.getFullYear(), <br>                                                calendar.date.getMonth(), <br>                                                this.innerHTML).format(calendar.dateFormatStyle); <br>        } <br>        calendar.hide(); <br>      } <br>      tds[i].onmouseover = function () { <br>        this.style.backgroundColor = calendar.colors["td_bg_over"]; <br>      } <br>      tds[i].onmouseout = function () { <br>        this.style.backgroundColor = calendar.colors["td_bg_out"]; <br>      } <br>      <br>      if (new Date().format(calendar.dateFormatStyle) == <br>          new Date(calendar.date.getFullYear(), <br>                   calendar.date.getMonth(), <br>                   dateArray[i]).format(calendar.dateFormatStyle)) { <br>        //tds[i].style.color = calendar.colors["cur_word"]; <br>        tds[i].style.backgroundColor = calendar.colors["cur_bg"]; <br>        tds[i].onmouseover = function () { <br>          this.style.backgroundColor = calendar.colors["td_bg_over"]; <br>        } <br>        tds[i].onmouseout = function () { <br>          this.style.backgroundColor = calendar.colors["cur_bg"]; <br>        } <br>        //continue; //若不想当天单元格的背景被下面的覆盖,请取消注释 →  2006-12-03 寒羽枫添加 <br>      }//end if <br>      <br>      //设置已被选择的日期单元格背影色 2006-12-03 寒羽枫添加 <br>      if (calendar.dateControl != null &amp;&amp; calendar.dateControl.value == new Date(calendar.date.getFullYear(), <br>                   calendar.date.getMonth(), <br>                   dateArray[i]).format(calendar.dateFormatStyle)) { <br>        tds[i].style.backgroundColor = calendar.colors["sel_bg"]; <br>        tds[i].onmouseover = function () { <br>          this.style.backgroundColor = calendar.colors["td_bg_over"]; <br>        } <br>        tds[i].onmouseout = function () { <br>          this.style.backgroundColor = calendar.colors["sel_bg"]; <br>        } <br>      } <br>    } <br>  } <br>} <br><br>//根据年、月得到月视图数据(数组形式) <br>Calendar.prototype.getMonthViewArray = function (y, m) { <br>  var mvArray = []; <br>  var dayOfFirstDay = new Date(y, m, 1).getDay(); <br>  var daysOfMonth = new Date(y, m + 1, 0).getDate(); <br>  for (var i = 0; i &lt; 42; i++) { <br>    mvArray[i] = "&amp;nbsp;"; <br>  } <br>  for (var i = 0; i &lt; daysOfMonth; i++){ <br>    mvArray[i + dayOfFirstDay] = i + 1; <br>  } <br>  return mvArray; <br>} <br><br>//扩展 document.getElementById(id) 多浏览器兼容性 from meizz tree source <br>Calendar.prototype.getElementById = function(id){ <br>  if (typeof(id) != "string" || id == "") return null; <br>  if (document.getElementById) return document.getElementById(id); <br>  if (document.all) return document.all(id); <br>  try {return eval(id);} catch(e){ return null;} <br>} <br><br>//扩展 object.getElementsByTagName(tagName) <br>Calendar.prototype.getElementsByTagName = function(object, tagName){ <br>  if (document.getElementsByTagName) return document.getElementsByTagName(tagName); <br>  if (document.all) return document.all.tags(tagName); <br>} <br><br>//取得HTML控件绝对位置 <br>Calendar.prototype.getAbsPoint = function (e){ <br>  var x = e.offsetLeft; <br>  var y = e.offsetTop; <br>  while(e = e.offsetParent){ <br>    x += e.offsetLeft; <br>    y += e.offsetTop; <br>  } <br>  return {"x": x, "y": y}; <br>} <br><br>//显示日历 <br>Calendar.prototype.show = function (dateObj, popControl) { <br>  if (dateObj == null){ <br>    throw new Error("arguments[0] is necessary") <br>  } <br>  this.dateControl = dateObj; <br>  <br>  //if (dateObj.value.length &gt; 0){ <br>  //this.date = new Date(dateObj.value.toDate()); <br>  //this.date = new Date(dateObj.value.toDate(this.dateFormatStyle));//由寒羽枫修改,带入用户指定的 style  <br>  this.date = (dateObj.value.length &gt; 0) ? new Date(dateObj.value.toDate(this.dateFormatStyle)) : new Date() ;//2006-12-03 寒羽枫添加 → 若为空则显示当前月份 <br>  this.year = this.date.getFullYear(); <br>  this.month = this.date.getMonth(); <br>  this.changeSelect(); <br>  this.bindData(); <br>  //} <br>  if (popControl == null){ <br>    popControl = dateObj; <br>  } <br>  var xy = this.getAbsPoint(popControl); <br>  this.panel.style.left = xy.x -25 + "px"; <br>  this.panel.style.top = (xy.y + dateObj.offsetHeight) + "px"; <br>  <br>  //由寒羽枫 2006-06-25 修改 → 把 visibility 变为 display,并添加失去焦点的事件 <br>  //this.setDisplayStyle("select", "hidden"); <br>  //this.panel.style.visibility = "visible"; <br>  //this.container.style.visibility = "visible"; <br>  this.panel.style.display = ""; <br>  this.container.style.display = ""; <br>  <br>  dateObj.onblur = function(){calendar.onblur();} <br>  this.container.onmouseover = function(){isFocus=true;} <br>  this.container.onmouseout = function(){isFocus=false;} <br>} <br><br>//隐藏日历 <br>Calendar.prototype.hide = function() { <br>  //this.setDisplayStyle("select", "visible"); <br>  //this.panel.style.visibility = "hidden"; <br>  //this.container.style.visibility = "hidden"; <br>  this.panel.style.display = "none"; <br>  this.container.style.display = "none"; <br>  isFocus=false; <br>} <br><br>//焦点转移时隐藏日历 → 由寒羽枫 2006-06-25 添加 <br>Calendar.prototype.onblur = function() { <br>    if(!isFocus){this.hide();} <br>} <br><br>//以下由寒羽枫 2006-06-25 修改 → 用&lt;iframe&gt; 遮住 IE 的下拉框 <br>/**//**//**//**//**//**//**//* <br>//设置控件显示或隐藏 <br>Calendar.prototype.setDisplayStyle = function(tagName, style) { <br>  var tags = this.getElementsByTagName(null, tagName) <br>  for(var i = 0; i &lt; tags.length; i++) { <br>    if (tagName.toLowerCase() == "select" &amp;&amp; <br>       (tags[i].name == "calendarYear" || <br>      tags[i].name == "calendarMonth")){ <br>      continue; <br>    } <br>    //tags[i].style.visibility = style; <br>    tags[i].style.display = style; <br>  } <br>} <br>*/ <br>//document.write('&lt;div id="ContainerPanel" style="visibility:hidden"&gt;&lt;div id="calendarPanel" style="position: absolute;visibility: hidden;z-index: 9999;'); <br>document.write('&lt;div id="ContainerPanel" style="display:none"&gt;&lt;div id="calendarPanel" style="position: absolute;display: none;z-index: 9999;'); <br>document.write('background-color: #FFFFFF;border: 1px solid #CCCCCC;width:175px;font-size:12px;"&gt;&lt;/div&gt;'); <br>if(document.all) <br>{ <br>document.write('&lt;iframe style="position:absolute;z-index:2000;width:expression(this.previousSibling.offsetWidth);'); <br>document.write('height:expression(this.previousSibling.offsetHeight);'); <br>document.write('left:expression(this.previousSibling.offsetLeft);top:expression(this.previousSibling.offsetTop);'); <br>document.write('display:expression(this.previousSibling.style.display);" scrolling="no" frameborder="no"&gt;&lt;/iframe&gt;'); <br>} <br>document.write('&lt;/div&gt;'); <br>//var calendar = new Calendar();  //此句被 寒羽枫注释,否则 IE 将报错 <br>//调用calendar.show(dateControl, popControl); <br>//--&gt;</p> <p><span style="font-size: medium; color: #ff0000;"><strong> 如果知道应该修改那一句就可以选择当前日期后面的日期请说一下,谢谢。!</strong></span></p>
函数调用问题,请各位兄弟帮忙!
最近用EXTJS写的一个页面,想实现按钮级别的权限控制,所以用了动态加载的按钮,结果从后台取得的按钮可以显示出来,但是按钮的handler方法不能被执行,在IE中提示错误为“对象不支持此属性或方法”,在FF中提示错误为“this.handler.call is not a function ”下面是相关代码: <br /> <br />js函数--- <br />//新增窗口 ,工具条按钮回调函数 <br /> <span style="color: red">showAddcomp</span>=function(){ <br /> Ext.getCmp("EmpForm").form.reset(); //重置表单 <br /> //EmpForm.form.isJunk.setvalue('2'); <br /> Ext.getCmp("EmpForm").isAdd=true;&nbsp;&nbsp; //设置ISADD附加属性为真 <br /> Ext.getCmp("AddEmpWin").setTitle("新增设备信息") <br /> Ext.getCmp("AddEmpWin").show(); <br /> } <br /> <br /> //编辑窗口 <br /> showEditcomp=function(){ <br /> Ext.getCmp("EmpForm").form.reset(); //重置表单 <br /> Ext.getCmp("EmpForm").isAdd=false;&nbsp;&nbsp; //设置ISADD附加属性为假 <br /> &nbsp;&nbsp;&nbsp; var sel=Ext.getCmp("grid_1").getSelectionModel().getSelected();//取得选中的行对应的record&nbsp;&nbsp; <br /> loadForm(sel.get('Id'));//调用加载表单数据函数 <br /> Ext.getCmp("AddEmpWin").show(); <br /> Ext.getCmp("AddEmpWin").setTitle("修改设备信息") <br /> } <br /> <br /> //动态加载工具条中的按钮 <br /> SetToolButtons=function(tbr) { <br /> Ext.Ajax.request({ <br /> url: 'computer1_getButton.do', <br /> params: '', <br /> method: 'POST', <br /> success: function(response, options){ <br /> var rsp = Ext.util.JSON.decode(response.responseText); <br /> var total = rsp.totalProperty; <br /> var arrays = new Array(total); <br /> for (var i = 0; i &lt; total; i++) { <br /> arrays[i] = new Ext.Toolbar.Button({ text: rsp.result[i].text, iconCls: rsp.result[i].iconCls,<span style="color: red">handler: rsp.result[i].handler</span>,tooltip: rsp.result[i].tooltip}); <br /> alert(rsp.result[i].handler); <br /> } <br /> <br /> tbr.add(arrays); <br /> tbr.addFill();//加入一个充满工具栏的空白元素 <br /> //tbr.addSeparator();//加入工具栏分割符 <br /> tbr.doLayout(); //让工具栏更新布局,解决了在表格渲染时不显示的问题 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; failure: function() { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ext.Msg.alert("提示信息", "按钮加载失败,请稍后重试!"); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />&nbsp;&nbsp;&nbsp; }); <br /> <br /> }   <br /> <br /> <br />EXTJS控件区--- <br /> Ext.onReady(function(){ <br /> Ext.QuickTips.init(); <br /> Ext.form.Field.prototype.msgTarget='side';//统一指定错误信息的提示方式&nbsp;&nbsp; <br />//生成工具栏 <br /> toolbar= new Ext.Toolbar( <br />/* <br /> [{ <br />      text:'添加', <br />      tooltip:'添加一条记录', <br />      iconCls:'add', <br />     <span style="color: red"> handler:showAddcomp</span> &nbsp;&nbsp; //hidden:true, //隐藏 <br /> &nbsp;&nbsp; //disabled:true // 不可用 <br />    }, '-', { <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id:'editButton', <br />      text:'修改', <br />      tooltip:'修改', <br />      iconCls:'option', <br />      handler:handleEdit <br />    },'-',{ <br />      text:'删除', <br />      tooltip:'删除记录', <br />      iconCls:'remove', <br />      handler:handleDelete <br />    }] <br />*/ <br /> ); <br /> <br />//执行函数为工具栏动态附加按钮 <br /> <span style="color: red">SetToolButtons(toolbar); </span> <br /> <br /> <br /> <br />奇怪在new Ext.Toolbar中定义的按钮可以执行动作,但用SetToolButtons函数动态加载的按钮就不行,是不是作用域的问题呀,帮帮我吧,兄弟们!!
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
C语言荣获2019年度最佳编程语言
关注、星标公众号,不错过精彩内容作者:黄工公众号:strongerHuang近日,TIOBE官方发布了2020年1月编程语言排行榜单。我在前面给过一篇文章《2019年11月C语言接近Ja...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
一份王者荣耀的英雄数据报告
咪哥杂谈本篇阅读时间约为 6 分钟。1前言前一阵写了关于王者的一些系列文章,从数据的获取到数据清洗,数据落地,都是为了本篇的铺垫。今天来实现一下,看看不同维度得到的结论。2环境准备本次实...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
Java校招入职华为,半年后我跑路了
何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?
点击上方蓝字设为星标下面开始今天的学习~今天分享四个代码量很少,但很牛逼很经典的算法或项目案例。1、no code 项目地址:https://github.com/kelseyhight...
​两年前不知如何编写代码的我,现在是一名人工智能工程师
全文共3526字,预计学习时长11分钟 图源:Unsplash 经常有小伙伴私信给小芯,我没有编程基础,不会写代码,如何进入AI行业呢?还能赶上AI浪潮吗? 任何时候努力都不算晚。 下面,小芯就给大家讲一个朋友的真实故事,希望能给那些处于迷茫与徘徊中的小伙伴们一丝启发。(下文以第一人称叙述) 图源:Unsplash 正如Elsa所说,职业转换是...
强烈推荐10本程序员必读的书
很遗憾,这个春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终将会...
作为一个程序员,内存的这些硬核知识你必须懂!
我们之前讲过CPU,也说了CPU和内存的那点事儿,今天咱就再来说说有关内存,作为一个程序员,你必须要懂的哪那些硬核知识! 大白话聊一聊,很重要! 先来大白话的跟大家聊一聊,我们这里说的内存啊,其实就是说的我们电脑里面的内存条,所以嘞,内存就是内存条,数据要放在这上面才能被cpu读取从而做运算,还有硬盘,就是电脑中的C盘啥的,一个程序需要运行的话需要向内存申请一块独立的内存空间,这个程序本身是存放在...
非典逼出了淘宝和京东,新冠病毒能够逼出什么?
loonggg读完需要5分钟速读仅需 2 分钟大家好,我是你们的校长。我知道大家在家里都憋坏了,大家可能相对于封闭在家里“坐月子”,更希望能够早日上班。今天我带着大家换个思路来聊一个问题...
牛逼!一行代码居然能解决这么多曾经困扰我半天的算法题
春节假期这么长,干啥最好?当然是折腾一些算法题了,下面给大家讲几道一行代码就能解决的算法题,当然,我相信这些算法题你都做过,不过就算做过,也是可以看一看滴,毕竟,你当初大概率不是一行代码解决的。 学会了一行代码解决,以后遇到面试官问起的话,就可以装逼了。 一、2 的幂次方 问题描述:判断一个整数 n 是否为 2 的幂次方 对于这道题,常规操作是不断这把这个数除以 2,然后判断是否有余数,直到 ...
用前端5分钟写一个在线m3u8在线播放器
&lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt; &lt;meta http-equiv="X...
Spring框架|JdbcTemplate介绍
文章目录一、JdbcTemplate 概述二、创建对象的源码分析三、JdbcTemplate操作数据库 一、JdbcTemplate 概述 在之前的web学习中,学习了手动封装JDBCtemplate,其好处是通过(sql语句+参数)模板化了编程。而真正的JDBCtemplete类,是Spring框架为我们写好的。 它是 Spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单...
为什么说程序员做外包没前途?
之前做过不到3个月的外包,2020的第一天就被释放了,2019年还剩1天,我从外包公司离职了。我就谈谈我个人的看法吧。首先我们定义一下什么是有前途 稳定的工作环境 不错的收入 能够在项目中不断提升自己的技能(ps:非技术上的认知也算) 找下家的时候能找到一份工资更高的工作 如果你目前还年轻,但高不成低不就,只有外包offer,那请往下看。 外包公司你应该...
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合...
终于!疫情之下,第一批企业没能熬住面临倒闭,员工被遣散,没能等来春暖花开!
先来看一个图: 这个春节,我同所有人一样,不仅密切关注这次新型肺炎,还同时关注行业趋势和企业。在家憋了半个月,我选择给自己看书充电。因为在疫情之后,行业竞争会更加加剧,必须做好未雨绸缪,时刻保持充电。 看了今年的情况,突然想到大佬往年经典语录: 马云:未来无业可就,无工可打,无商可务 李彦宏:人工智能时代,有些专业将被淘汰,还没毕业就失业 马化腾:未来3年将大洗牌,迎21世界以来最大失业潮 王...
昂,我24岁了
24岁的程序员,还在未来迷茫,不知道能不能买得起房子
作为程序员的我,大学四年一直自学,全靠这些实用工具和学习网站!
我本人因为高中沉迷于爱情,导致学业荒废,后来高考,毫无疑问进入了一所普普通通的大学,实在惭愧???? 我又是那么好强,现在学历不行,没办法改变的事情了,所以,进入大学开始,我就下定决心,一定要让自己掌握更多的技能,尤其选择了计算机这个行业,一定要多学习技术。 在进入大学学习不久后,我就认清了一个现实:我这个大学的整体教学质量和学习风气,真的一言难尽,懂的人自然知道怎么回事? 怎么办?我该如何更好的提升自...
立即提问