getElementById获取不到对象 1C

求大侠指点,为什么以下代码 getElementById获取不到 id='myshow'的div?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>

<script language="javascript"  type="text/javascript">
 var el=document.getElementById("myshow");
 el.innerHTML="dfsdfdf"
</script>
</head>

<body>
 <div id="myshow"></div>
</body>
</html> 

7个回答

图片说明
错误提示:不能设置null的innerHTML属性
为什么没有得到div元素呢?
因为这段JS代码运行时,浏览器还没解析后面的代码,DOM树中还没有那个div。
可以这样

 window.onload = function(){
 var el=document.getElementById("myshow");
 el.innerHTML="dfsdfdf"
};

或者把标签放到<div>后面</p> <p>看楼主应该是个新手,你先查一下浏览器解析网页的顺序的相关资料<br> 建议你先看一下《JavaScript从入门到精通》之类的入门书籍,再看看《JavaScript高级程序设计》</p>

把 script 标签 放到 div 后面

放onload事件里面,或者将你的代码放到dom对象下,你的代码执行时dom还没有生成,放下面就没事了

 <script language="javascript"  type="text/javascript">
window.onload=function(){
 var el=document.getElementById("myshow");
 el.innerHTML="dfsdfdf"
 }
</script>

DOM加载顺序
1.解析HTML结构。
2.加载外部脚本和样式表文件。
3.解析并执行脚本代码。
4.构造HTML DOM模型。
5.加载图片等外部文件。
6.页面加载完毕。
加载顺序实例:

 <html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Title</title>
    <style type="text/css">
        body
        {
            font-sie: 12px;
        }
    </style>
    <link href="style.css" rel="stylesheet" type="text/css" media="all" />
    <script src="js.js" type="text/javascript"></script>
</head>
<body>
    <div>
        <script type="text/javascript">
            function f1() { }
        </script>
        <img src="1.gif" />
    </div>
    <script type="text/javascript">
        function f2() { }
    </script>
</body>
</html>

html → head → title → #text(网页标题) → style → 加载样式 → 解析样式 → link → 加载外部样式表文件 → 解析外部样式表 → script → 加载外部脚本文件 → 解析外部脚本文件 → 执行外部脚本 → body → div → script → 加载脚本 → 解析脚本 → 执行脚本 → img → script → 加载脚本 → 解析脚本 → 执行脚本 → 加载外部图像文件 → 页面初始化完毕

这段JS代码运行时,浏览器还没解析后面的代码,DOM树中还没有那个div,把 script 标签 放到 div 后面

事实上已经取到了,只不过你的js代码没有触发,可以将那段代码写在一个function里,然后用window.onload,或者写个button click事件触发它即可。

脚本先执行的,标签后载入,改下脚本位置就可以了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
getElementById无法获取JS自动生成的模块
简单来讲,就是一张表格,里面有很多行,其中第一行是直接写死在代码中的,其余的各行是用JS生成的,然后第一行中的数据的ID为line0.1,line0.2,第二行就是line1.1,line1.2,类型都是input,其他的以此类推,现在的问题是: 在提交的时候调用一个函数,onsubmit="test()",test函数体中调用了getElementId方法,get line0.1,line0.2时没有问题,能get到对应的对象,但是get line1.1,line1.2的时候就为Null,这和由JS生成有什么关系吗?(页面加载的时候就已经加载那些行,应该不存在说调用getElementById的时候还未生成) 求解原因是什么,或者有什么好的方法可以发现问题所在?谢谢!
如何在Vue2.0的mounted钩子函数里获取指定dom对象?
我使用原生js的document.getElementById()和Vue的ref属性均获取不到指定dom对象 ![使用原生js的html代码:](https://img-ask.csdn.net/upload/201710/31/1509417422_410474.png) ![js代码:](https://img-ask.csdn.net/upload/201710/31/1509417441_477280.png) ![页面显示](https://img-ask.csdn.net/upload/201710/31/1509417460_68487.png) 使用Vue2.0的ref属性 ![html代码:](https://img-ask.csdn.net/upload/201710/31/1509417700_300550.png) ![js代码:](https://img-ask.csdn.net/upload/201710/31/1509417714_685933.png) ![页面显示](https://img-ask.csdn.net/upload/201710/31/1509417739_391307.png) 不知道问题出在哪里,请各位大神帮帮忙!
获取IE输入input标签的输入内容,获得doc2文档GetgetElementById为什么为空?
# 获得的Docment文档后无法获取指定ID元素怎么办 32位Dll注入获取Internet Explorer_Server,替换了窗口之后获得Docment2使用GetelementByid 获得指定元素对象为空是为什么 ``` CComPtr<IHTMLDocument2> GetDocmentInterface(HWND hwnd) { CoInitialize(NULL); HINSTANCE hInst = ::LoadLibrary(_T("OLEACC.DLL")); CComPtr<IHTMLDocument2> pDoc2 = NULL; if (hInst != NULL) { printfMessage("加载dll成功"); if (hwnd != NULL) { CComPtr<IHTMLDocument> spDoc = NULL; LRESULT lRes; UINT nMsg = ::RegisterWindowMessage(_T("WM_HTML_GETOBJECT"));//定义一个新的窗口消息 SendMessageTimeout(hwnd, nMsg, 0L, 0L, SMTO_BLOCK, 2000, (PDWORD_PTR)&lRes);//将指定的消息发送到一个或多个窗口 LPFNOBJECTFROMLRESULT pfObjectFromLresult = (LPFNOBJECTFROMLRESULT)::GetProcAddress(hInst, "ObjectFromLresult"); if (pfObjectFromLresult != NULL) printfMessage("窗口替换成功"); pfObjectFromLresult(lRes, IID_IHTMLDocument2, 0, (void**)&pDoc2); } ::FreeLibrary(hInst); } else printfMessage("获取文档失败"); if (pDoc2 != NULL) { printfMessage("获取文档成功"); } return pDoc2; } void GetNameEdit(HWND hwnd) { CComPtr<IHTMLDocument2>&pDoc2 = GetDocmentInterface(hwnd); if (pDoc2) { printfMessage("doc2不为空"); CComQIPtr<IHTMLDocument3> doc3 = pDoc2; CComPtr<IHTMLElement> spElement; if (doc3) { printfMessage("doc3不为空"); HRESULT hr; hr= doc3->getElementById(L"pw_box", &spElement); char str[20]; sprintf(str, "%#x", hr); printfMessage(str); if (spElement!=NULL) { int Error = GetLastError(); printfMessage("Ele错误码2:", Error); printfMessage("Ele不为空"); ```
本人是初学者看一些代码有些不懂,还请大神指点一下,谢谢
${ msg }表示什么意思呢??? index.jsp怎么跳转到main.jsp呢??? **index.jsp** ``` <html > <title>聊天室</title> <link href="CSS/style.css" rel="stylesheet"> <script type="text/javascript"> function check(){ if(document.getElementById("form1").username.value==""){ alert("请输入用户名!"); document.getElementById("form1").username.focus(); return false; } if(document.getElementById("form1").password.value==""){ alert("请输入密码名!"); document.getElementById("form1").password.focus(); return false; } } </script> <body> <br> <center><h3 style="color:red;">${ msg }</h3></center> <form id="form1" name="form1" method="post" action="${pageContext.request.contextPath }/user" onSubmit="return check()"> <input type="hidden" name="method" value="login"> <table width="371" height="230" border="0" align="center" cellpadding="0" cellspacing="0" background="images/login.jpg"> <tr> <td height="120" colspan="3" class="word_dark">&nbsp;</td> </tr> <tr> <td width="53" align="center" valign="top" class="word_dark">&nbsp;</td> <td width="216" align="center" valign="top" class="word_dark"> <table width="100%" height="100%"> <tr> <td>用户名:</td> <td><input type="text" name="username" class="login"></td> </tr> </table> </td> <td width="94" valign="top" class="word_dark"></td> </tr> <tr> <td width="53" align="center" valign="top" class="word_dark">&nbsp;</td> <td width="216" align="center" valign="top" class="word_dark"> <table width="100%" height="100%"> <tr> <td>密&nbsp;&nbsp;码:</td> <td><input type="password" name="password" class="login"></td> </tr> </table> </td> <td width="94" valign="top" class="word_dark"></td> </tr> <tr> <td width="53" align="center" valign="top" class="word_dark">&nbsp;</td> <td width="216" align="center" valign="top" class="word_dark"> <input name="Submit" type="submit" class="btn_bg" value="进 入"> </td> <td width="94" valign="top" class="word_dark"> </td> </tr> </table> </form> </body> </html> ``` **main** ``` <%@page contentType="text/html" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ include file="safe.jsp"%> <html> <head> <title>聊天室</title> <link href="CSS/style.css" rel="stylesheet"> <script type="text/javascript" src="${ pageContext.request.contextPath }/js/jquery-1.8.3.js"></script> <script type="text/javascript"> var sysBBS = "<span style='font-size:14px; line-height:30px;'>欢迎光临心之语聊天室,请遵守聊天室规则,不要使用不文明用语。</span><br><span style='line-height:22px;'>";var sysBBS = "<span style='font-size:14px; line-height:30px;'>欢迎光临心之语聊天室,请遵守聊天室规则,不要使用不文明用语。</span><br><span style='line-height:22px;'>"; window.setInterval("showContent();",1000); window.setInterval("showOnLine();",10000); window.setInterval("check();",1000); // Jquery:JS框架. // 相当于window.onload $(function(){ showOnLine(); showContent(); check(); }); function check(){ $.post("${pageContext.request.contextPath}/user?method=check",function(data){ if(data == 1){ // 提示用户下线了 alert("用户已经被踢下线了!"); // 回到登录页面! window.location = "index.jsp"; } }); } // 显示在线人员列表 function showOnLine(){ // 异步发送请求 获取在线人员列表 // Jquery发送异步请求 $.post("${pageContext.request.contextPath}/online.jsp?"+new Date().getTime(),function(data){ // $("#online") == document.getElementById("online"); $("#online").html(data); }); } // 显示聊天的内容 function showContent(){ $.post("${pageContext.request.contextPath}/user?"+new Date().getTime(),{'method':'getMessage'},function(data){ $("#content").html(sysBBS+data); }); } function set(selectPerson){ //自动添加聊天对象 if(selectPerson != "${existUser.username}"){ form1.to.value=selectPerson; }else{ alert("请重新选择聊天对象!"); } } function send(){ if(form1.to.value==""){ alert("请选择聊天对象!"); return false; } if(form1.content.value==""){ alert("发送信息不可以为空!"); form1.content.focus(); return false; } // $("#form1").serialize():让表单中所有的元素都提交. // jquery提交数据.{id:1,name:aa,age:25} $.post("${pageContext.request.contextPath}/user?"+new Date().getTime(),$("#form1").serialize(),function(data){ $("#content").html(sysBBS+data+"</span>"); }); } function exit(){ alert("欢迎您下次光临!"); window.location.href="${pageContext.request.contextPath}/user?method=exit"; } function checkScrollScreen(){ if(!$("#scrollScreen").attr("checked")){ $("#content").css("overflow","scroll"); }else{ $("#content").css("overflow","hidden"); //当聊天信息超过一屏时,设置最先发送的聊天信息不显示 //alert($("#content").height()); $("#content").scrollTop($("#content").height()*2); } setTimeout('checkScrollScreen()',500); } </script> </head> <body> <table width="778" height="150" border="0" align="center" cellpadding="0" cellspacing="0" background="images/top.jpg"> <tr> <td>&nbsp;</td> </tr> </table> <table width="778" height="276" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="165" valign="top" bgcolor="#f6fded" id="online" style="padding:5px">在线人员列表</td> <td width="613" height="200px" valign="top" background="images/main_bj.jpg" bgcolor="#FFFFFF" style="padding:5px; "> <div style="height:290px; overflow:hidden" id="content">聊天内容</div></td> </tr> </table> <table width="778" height="95" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#D6D3CE" background="images/bottom.jpg"> <form action="" id="form1" name="form1" method="post"> <input type="hidden" name="method" value="sendMessage"/> <tr> <td height="30" align="left">&nbsp;</td> <td height="37" align="left"> <input name="from" type="hidden" value="${existUser.username}">[${existUser.username} ]对 <input name="to" type="text" value="" size="35" readonly="readonly"> 表情 <select name="face" class="wenbenkuang"> <option value="无精打采的">无精打采的</option> </select> 说:</td> <td width="189" align="left">&nbsp;&nbsp;字体颜色: <select name="color" size="1" class="wenbenkuang" id="select"> <option selected>默认颜色</option> <option style="color:#999999" value="999999">烟雨蒙蒙</option> </select> </td> <td width="19" align="left"><input name="scrollScreen" type="checkbox" class="noborder" id="scrollScreen" onClick="checkScrollScreen()" value="1" checked> </td> </tr> <tr> <td width="21" height="30" align="left">&nbsp;</td> <td width="549" align="left"> <input name="content" type="text" size="70" onKeyDown="if(event.keyCode==13 && event.ctrlKey){send();}"> <input name="Submit2" type="button" class="btn_grey" value="发送" onClick="send()"> </td> <td align="right"><input name="button_exit" type="button" class="btn_grey" value="退出聊天室" onClick="exit()"> </td> <td align="center">&nbsp;</td> </tr> <tr> <td height="30" align="left">&nbsp;</td> <td align="center">&nbsp;</td> </tr> </form> </table> </body> </html> ```
如何获取同一个form表单里的对象的value值呢
``` <input type="hidden" id="district<%=i%>" name="district" > <script> document.getElementById("district"+i).value=document.getElementById("shuru"+i).value </script> ``` 如题,我想将hidden里的value 设置为上面id为shuru的的值 ``` <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@page import="Db.Db"%> <%@page import="java.text.SimpleDateFormat"%> <%@ page import="java.sql.*"%> <%@ page import="java.util.Date"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!-- 修改前--> <% request.setCharacterEncoding("utf-8"); String uaddr = null; int uid = 0; String uname = request.getParameter("uname"); String[] strgid = request.getParameterValues("addOrders"); Connection conn = null; Statement stmt = null; Statement stmt1 = null; ResultSet rs = null; ResultSet rs1 = null; conn = Db.getconn(); stmt = conn.createStatement(); stmt1 = conn.createStatement(); System.out.println(uname); rs1 = stmt1.executeQuery("select * from user where uname = '"+ uname + "' "); if (rs1.next()) { uaddr = rs1.getString("uaddr"); uid = rs1.getInt("uid"); } %> <% SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String nowTime = sdf.format(new Date()); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>购物车</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"> </head> <body> <form method="post" action="servlet/AddOrdersServlet" name="numSender"> <input type="hidden" name="uid" value="<%=uid%>"> <input type="hidden" name="uname" value="<%=uname%>"> <input type="hidden" name="oaddr" value="<%=uaddr%>"> <input type="hidden" name="dealtime" value="<%=nowTime%>"> <!-----script放到循环外-------> <script type="text/javascript"> function jianC(i,p1) { /*定义变量K,用商品数量输入框里面的数字赋值*/ var k =document.getElementById("shuru"+i);//获取数量输入控件 var v=parseInt(k.value,10); v--; /*点击-号按钮会递减商品价格*/ if (v < 1) { alert("亲,商品数量不能小于1!"); return//超限退出 } k.value=v; k.setAttribute('sum',v*p1)//将这个物品的小计放到自定义属性sum中,方便计算总价 setTotal()//重新设置总价钱 } function adddC(i,p1) { /*点击+号按钮会递加商品数量*/ var k =document.getElementById("shuru"+i);//获取数量输入控件 var v=parseInt(k.value,10); v++; if (v > 99) { alert("您所选择的数量已经到达库存上限!"); return//超限退出 } k.value=v; k.setAttribute('sum',v*p1)//将这个物品的小计放到自定义属性sum中,方便计算总价 setTotal()//重新设置总价钱 } function setTotal(){//设置总价 var o=document.getElementsByName('init_num');//获取数量输入框 var sum=0; for(var i=0;i<o.length;i++)sum+=parseInt(o[i].getAttribute('sum')||0) document.getElementById("cost").value = sum + "元" } function sendNum() { alert("xxxxxx"); document.getElementById("district"+i).value=document.getElementById("shuru"+i).value; alert("aaaaaaaaaaa"); } </script> <table border=1 align="center"> <tr> <td colspan="4" align="center">购物车</td> </tr> <tr> <td align="center">商品</td> <td align="center">数量</td> <td align="center" colspan="1">操作</td> </tr> <% for (int i = 0; i < strgid.length; i++) { int gid = Integer.parseInt(strgid[i]); rs = stmt.executeQuery("select * from goods where gid =" + gid); if (rs.next()) { String strgprice = rs.getString("gprice"); Double p =Double.parseDouble(strgprice); // System.out.println("p="+p); %> <!-- ss --> <tr> <td><img src="<%=rs.getString("gpicture")%>">&nbsp;<%=rs.getString("gname")%></td> <td><input type="button" id="jian" onClick="jianC(<%=i%>,<%=p%>)" value="-"><!-----传入循环i和单价-------> <input id="shuru<%=i%>" name="init_num" class="input_text" type="text" value="0" size="3"><!-----id连接上i变为唯一-------> <input type="hidden" id="district<%=i%>" name="district" > <script> document.getElementById("district"+i).value=document.getElementById("shuru"+i).value </script> <input type="button" id="addd" onClick="adddC(<%=i%>,<%=p%>)" value="+"><!-----传入循环i和单价-------></td> <td> <input type="checkbox" name="gid" value="<%=gid %>"> </td> </tr> <% } } rs.close(); rs1.close(); stmt.close(); stmt1.close(); conn.close(); %> <tr> <td colspan="4" align="center"> 总价:<input id="cost" class="input_text" type="text" value="0" size="3" value="0"></td> </tr> <tr> <td colspan="5" align="center"> <button id="buy_anniu" type="submit" onClick="sendNum()">提交</button> <button type="reset">重置</button> </td> </tr> </table> </form> </body> </html> ```
htmlunit+jsoup爬取知乎视频,获取的html字符串中缺少视频信息,如何解决?
大神帮忙看一下 今天使用htmlunit+jsoup爬取知乎网站的视频,发现爬取到的html中缺少视频的信息,无法进行下一步了 知乎视频网址:https://video.zhihu.com/video/1157743087110549504?autoplay=false&useMSE= 浏览器检查中查看到的视频信息 ![图片说明](https://img-ask.csdn.net/upload/201910/12/1570872018_377176.png) java代码 ``` @Test public void testttt() { final WebClient webClient = new WebClient(BrowserVersion.CHROME);//新建一个模拟谷歌Chrome浏览器的浏览器客户端对象 webClient.getOptions().setThrowExceptionOnScriptError(false);//当JS执行出错的时候是否抛出异常, 这里选择不需要 webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);//当HTTP的状态非200时是否抛出异常, 这里选择不需要 webClient.getOptions().setActiveXNative(false); webClient.getOptions().setCssEnabled(false);//是否启用CSS, 因为不需要展现页面, 所以不需要启用 webClient.getOptions().setJavaScriptEnabled(true); //很重要,启用JS webClient.setAjaxController(new NicelyResynchronizingAjaxController());//很重要,设置支持AJAX HtmlPage page = null; try { page = webClient.getPage("https://video.zhihu.com/video/1157743087110549504?autoplay=false&useMSE=");//尝试加载上面图片例子给出的网页 // page = webClient.getPage("http://ent.sina.com.cn/film/");//尝试加载上面图片例子给出的网页 } catch (Exception e) { e.printStackTrace(); }finally { webClient.close(); } webClient.waitForBackgroundJavaScript(30000000);//异步JS执行需要耗时,所以这里线程要阻塞30秒,等待异步JS执行结束 String pageXml = page.asXml();//直接将加载完成的页面转换成xml格式的字符串 System.out.println(pageXml); //TODO 下面的代码就是对字符串的操作了,常规的爬虫操作,用到了比较好用的Jsoup库 // Document document = Jsoup.parse(pageXml);//获取html文档 // List<Element> infoListEle = document.getElementById("feedCardContent").getElementsByAttributeValue("class", "feed-card-item");//获取元素节点等 // infoListEle.forEach(element -> { // System.out.println(element.getElementsByTag("h2").first().getElementsByTag("a").text()); // System.out.println(element.getElementsByTag("h2").first().getElementsByTag("a").attr("href")); // }); } ``` 运行程序打印的html如下: ![图片说明](https://img-ask.csdn.net/upload/201910/12/1570872108_470794.png) 有大神遇到过这个问题吗?帮忙看一下
webwork的文件上传总是得不到文件对象
<p>xml</p> <pre name="code" class="xml">&lt;interceptor name="fileupload" class="com.opensymphony.webwork.interceptor.FileUploadInterceptor"/&gt; &lt;interceptor-stack name="uploadStack"&gt; &lt;interceptor-ref name="fileupload"/&gt; &lt;interceptor-ref name="defaultStack"/&gt; &lt;/interceptor-stack&gt; &lt;package name="fileUpload" namespace="/fileUpload" extends="webwork-default"&gt; &lt;default-interceptor-ref name="uploadStack" /&gt; &lt;action name="fileUpload" class="com.casetrial.fileUpload.UploadAction"&gt; &lt;result name="success"&gt;/pages/appealSituation/fileUploadIndex.jsp&lt;/result&gt; &lt;/action&gt; &lt;/package&gt;</pre> <p> action</p> <pre name="code" class="java">public class UploadAction extends ActionSupport { private File[] files; //多个文件对象数组 private String[] filesFileName; //文件对应的真实文件名 单个文件上传时不需要此属性定义 //多文件上传时 file.getName() 无效,取得不是真实的文件名,而是upload_xxx.tmp public String execute(){ System.out.println(files==null); if (files != null){ for (int i = 0; i &lt; files.length; i++){ File file = files[i]; String fileName = filesFileName[i]; System.out.print(" File list: "); System.out.print(" name:=" + file.getName() + " "); System.out.print(" fileName:=" + fileName + " "); System.out.print(" path:=" + file.getPath() + " "); System.out.print(" "); FileOutputStream outputStream = null; FileInputStream fileIn = null; ResourceBundle rb = ResourceBundle.getBundle("config"); String fileDir = rb.getString("saveDir")+File.separator; String filePath = fileDir+fileName; File f = new File(fileDir); f.mkdirs(); try { outputStream = new FileOutputStream(filePath); fileIn = new FileInputStream(file); } catch (FileNotFoundException e) { e.printStackTrace(); } byte[] buffer = new byte[1024]; int len; try { while((len=fileIn.read(buffer))&gt;0){ outputStream.write(buffer,0,len); } fileIn.close(); outputStream.close(); } catch (IOException e) { e.printStackTrace(); } System.out.println("uploadfile name="+fileName); } }else{ System.out.println("file is null!"); } return SUCCESS; } public String[] getFilesFileName(){ return filesFileName; } public void setFilesFileName(String[] filesFileName){ this.filesFileName = filesFileName; } public File[] getFiles(){ return files; } public void setFiles(File[] files){ this.files = files; } /**//** * 获取session对象 * @return */ public HttpSession getSession(){ return getRequest().getSession(); } /**//** * 获取request对象 * * @return httpServletRequest */ public HttpServletRequest getRequest(){ return ServletActionContext.getRequest(); } /**//** * 获取response对象 * * @return HttpServletResponse */ public HttpServletResponse getResponse(){ return ServletActionContext.getResponse(); } /**//** * 获取ServletContext对象 * * @return ServletContext */ public ServletContext getContext(){ return ServletActionContext.getServletContext(); } /**//** * 获取ActionContext * * @return */ public ActionContext getActionContext(){ return ActionContext.getContext(); } /**//** * 获取参数map * * @return */ public Map getParameterMap(){ return getActionContext().getSession(); } /**//** * 获取输入参数名字对应的值 * * @param name * @return */ public String getParameter(String name){ return (String) getParameterMap().get(name); } }</pre> <p> </p> <p>页面</p> <pre name="code" class="html">&lt;html&gt; &lt;head&gt; &lt;/head&gt; &lt;script language="Javascript" charset="utf-8"&gt; function addAccessory(){ var accessoryListObj = document.getElementById("accessoryList"); var accObj = document.createElement("span"); var spanId = (new Date()).getTime(); var spanHTML = " &lt;input name='files' type='file' /&gt;&lt;input type='button' value='删除' onclick=deleteFile('" + spanId + "')&gt;&lt;br&gt;"; accObj.setAttribute("id", spanId); accObj.setAttribute("width", "100px"); accObj.innerHTML = spanHTML; accessoryListObj.appendChild(accObj); } function deleteFile(fileId){ var accessoryListObj = document.getElementById("accessoryList"); var accObj = document.getElementById(fileId); accessoryListObj.removeChild(accObj); } &lt;/script&gt; &lt;body&gt; &lt;form action="../fileUpload/fileUpload.action" enctype="multipart/form-data" method="post"&gt; &lt;table id="DataTable"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td class="style2" colspan="4"&gt; &lt;strong&gt;附件: &lt;/strong&gt; &lt;span title="增加附件" onclick="addAccessory()" style="cursor:pointer;color:blue;"&gt;&lt;strong&gt;[添加附件]&lt;/strong&gt; &lt;/span&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="4" style="width:100%;height:300px;"&gt; &lt;div id="accessoryList" style="overflow-x:auto;overflow-y:auto;width:1000px;height:100%;"&gt; &amp;nbsp; &lt;input type="file" name="files"&gt; &lt;/div&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="4" style="width:100%;height:15px;" align="center"&gt; &lt;input type="Submit" value="提交"&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;/form&gt; &lt;/body&gt; &lt;/html&gt; </pre> <p> </p> <p>一运行总是会发现files对象为Null,就得不到所要上传的东西,大家看看是错在哪儿了,我看了半天找不出来</p>
为什么我做的登录页面的验证码,第一次总是加载不出来,要点击刷新才行?
![图片说明](https://img-ask.csdn.net/upload/201912/16/1576481218_121713.png) ![图片说明](https://img-ask.csdn.net/upload/201912/16/1576481226_828744.png) ![图片说明](https://img-ask.csdn.net/upload/201912/16/1576481234_406433.png) ++++++++++++++++++++++++++++++++++++++++++++++ <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <script> <%-- 当窗口加载完毕 --%> window.onload = function (ev) { document.getElementById("img").onclick = function (ev1) { this.src = "./checkCodeServlet?time="+new Date().getTime(); } } </script> <form action="./loginServlet"> <table> <tr> <td>账号</td> <td><input type="text" name="username"></td> </tr> <tr> <td>密码</td> <td><input type="password" name="password"></td> </tr> <tr> <td>验证码</td> <td><input type="text" name="checkCode"></td> </tr> <tr> <td colspan="2"><img id="img" src="com.test.pro.CheckCodeServlet"></td> </tr> <tr> <td>提交</td> <td colspan="2"><input type="submit" value="登录"></td> </tr> <tr> <td></td> <td></td> </tr> </table> </form> <div><%=request.getAttribute("cc_error") == null ? "" : request.getAttribute("cc_error") %></div> <div><%=request.getAttribute("login_error") == null ? "" : request.getAttribute("login_error")%></div> </body> </html> ++++++++++++++++++++++++++++++++++++++++++++++ @WebServlet("/checkCodeServlet") public class CheckCodeServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int width = 100; int height = 50; //1.创建一对象,在内存中图片(验证码图片对象) BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); //2.美化图片 //2.1 填充背景色 Graphics g = image.getGraphics();//画笔对象 g.setColor(Color.PINK);//设置画笔颜色 g.fillRect(0,0,width,height); //2.2画边框 g.setColor(Color.BLUE); g.drawRect(0,0,width - 1,height - 1); String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789"; //生成随机角标 Random ran = new Random(); StringBuilder sb = new StringBuilder(); for (int i = 1; i <= 4; i++) { int index = ran.nextInt(str.length()); //获取字符 char ch = str.charAt(index);//随机字符 // 把生成的验证码存进sb sb.append(ch); //2.3写验证码 g.drawString(ch+"",width/5*i,height/2); } // 转换sb的格式? String checkCode_session = sb.toString(); //将验证码存入session request.getSession().setAttribute("checkCode_session",checkCode_session); //2.4画干扰线 g.setColor(Color.GREEN); //随机生成坐标点 for (int i = 0; i < 10; i++) { int x1 = ran.nextInt(width); int x2 = ran.nextInt(width); int y1 = ran.nextInt(height); int y2 = ran.nextInt(height); g.drawLine(x1,y1,x2,y2); } //3.将图片输出到页面展示 ImageIO.write(image,"jpg",response.getOutputStream()); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); } }
vue 如何调用在 export default {}外面的function
比如export default { } function wordStatic(input) { // 获取文本框对象 var el = document.getElementById('dcs'); if (el && input) { // 获取输入内容长度并更新到界面 var value = input.value; // 将换行符不计算为单词数 value = value.replace(/\n|\r/gi,""); // 更新计数 el.innerText = value.length; } } 如何在textarea中调用这个函数呢
各位大神求js或jq,获取当前对象的iframe父窗口元素
我有个函数,openPragram(obj),在前台调用的时候是openPragram(this),我要获取id为window的div的bs属性,当前的点击事件是写在iframe中,要获取的元素在父div中,父div是未来元素。这种情况要怎么去获取,我已经能获取到这个元素,但不是当前双击事件的父元素,始终都是第一个父div的元素,我要获取当前的 前台父div页面,要获取的元素页面 ``` <ul> <foreach name="rel" item='li'> <switch name="li['ptype']"> <case value="1"><li ondblclick="filewindow(this,1)" pid="{$li['pid']}" href="{$li['paddress']}"><div class='icon_img'><img width="100%" src="__PUBLIC__{$li['pimage']}"></div><div class="icon_font">{$li['pname']}</div></li></case> <case value="9"><li ondblclick="filewindow(this,1)" pid="{$li['pid']}" href="{$li['paddress']}"><div class='icon_img'><img width="100%" src="__PUBLIC__/images/deskicon/folder.png"></div><div class="icon_font">{$li['pname']}</div></li></case> </switch> </foreach> </ul> ``` 前台事件页面 ``` <body> <div class="container"> <div class="system" id="system"> <foreach name="list" item="li"> <li url="{$li['paddress']}" ondblclick="openProgram(this)" pname="{$li['pname']}" pid="{$li['pid']}" href="{$li['paddress']}"> <svg class="icon" aria-hidden="true"> <use xlink:href="#icon-windows"></use> </svg> <div class="name">{$li['pname']}</div> </li> </foreach> </div> </div> </body> ``` 前台未来元素js函数 ``` var window_div='<div id="window_div" zt="0"><div id="window"><div class="window_div_tools"><div class="window_div_nav"><li class="window_div_nav_left" title="后退" onclick="history.back()">&lt;</li><li class="window_div_nav_right" title="前进" onclick="history.go(1)">&gt;</li></div><div id="window_title" class="window_div_tools_left fleft"></div><div class="window_div_tools_right fright"><li class="btn-nomal" id="minimize">-</li><li class="btn-nomal" id="Maximization">◻</li><li id="closewindow" class="btn-danger" onclick=closewindow(this)>&times;</li></div></div><iframe id="window_div_content" name="window_div_content" class="window_div_content" src=""></iframe id="content"><div id="window_div_corner_rightbottom"><svg class="icon" aria-hidden="true"><use xlink:href="#icon-tuodong_icon"></use></svg></div></div></div>'; function filewindow(a,type){ var bsf=uuid(8,16); var parentdiv=$(window_div); var newdiv=parentdiv.attr('bs',bsf); $('#desk').append(newdiv); //判断调用函数的来源 switch(type){ //桌面图标 case 1: //获取应用方法 var url=a.getAttribute('href'); $('[bs="'+bsf+'"] #window_div_content').attr('src',url); //获取应用名 var title=a.lastChild; $('[bs="'+bsf+'"] #window_title').text(title.innerHTML);//把缩略图放到任务栏 var thumbnail=a.getElementsByTagName('img')[0].getAttribute('src')?a.getElementsByTagName('img')[0].getAttribute('src'):'./Public/images/deskicon/1.jpg'; var li=$('.taskbar-left li :last'); li.after('<li bsf='+bsf+' title='+title.innerHTML+' style="margin:0 2px;height:32px;padding-top:6px;border-bottom:2px solid #FFF;"><img src='+thumbnail+' width="25px"></li>'); break; //右键菜单 case 2: //获取应用方法 var url=a.getAttribute('href'); $('[bs="'+bsf+'"] #window_div_content').attr('src',url); //获取应用名 $('[bs="'+bsf+'"] #window_title').text(a.innerHTML); //把缩略图放到任务栏 var li=$('.taskbar-left li :last'); li.after('<li bsf='+bsf+' title='+a.innerHTML+' style="margin:0 2px;height:32px;padding-top:6px;border-bottom:2px solid #FFF;"><img src=./Public/images/deskicon/1.jpg width="25px"></li>'); break; } var div=parentdiv.offset(); parentdiv.css('top',div.top+10+'px'); parentdiv.css('z-index',2100).siblings().css('z-index',100); $('[bsf="'+bsf+'"]').css('background','rgba(255,255,255,0.3').siblings().css('background',''); } ``` 第二个js函数 ``` function openProgram(obj){ // var object=obj; var pid=$(obj).attr('pid'); //程序id var pname=$(obj).attr('pname'); //程序名称 var url=$(obj).attr('href'); //控制器地址 // var div=this.parent.document.getElementById('window_div').getAttribute('bs'); // var div=$(obj).parents('#window_div',window.parent.document).attr('bs'); // var div=window.parent.document.getElementById("window_div").getAttribute('bs'); var div=$('#window_div',parent.document).attr('bs'); //当前窗口的唯一标识 alert(div) $('#window_div_content',window.parent.document).attr('src',url); //更换当前窗口的url地址 ```
如何获取Ext中没有active的tab页里的对象
系统首页底部有个Ext TabPanel,默认是收缩的,该TabPanel包含两个tab,并且activeTab:0,现在我打开系统首页,点击某个菜单“显示Map2”,要求最大化第二个tab,并获取该tab中的html页面(页面嵌套一个Flash对象)中的Flash Object,但是因为activeTab默认是0,所以在获取第二个tab中的对象报脚本错误。 以下是Tab Panel部分代码: [code="java"] titlebar: true, height: 300, margins:'0 0 0 0', items: new Ext.TabPanel({ id: 'flashId', border:false, activeTab:0, tabPosition:'bottom', items:[{ id:'web_map_tab1', html:'<iframe src="<%=request.getContextPath()%>/flash/map1.html?token=${userContext.sessionId}" id="__webMap1__" name="__webMap1__" frameBorder="0" scrolling="auto" top="0" width="100%" height="100%"></iframe>', title: 'Map1', autoScroll:true },{ id:'web_map_tab2', html:'<iframe src="<%=request.getContextPath()%>/flash/map2.html?token=${userContext.sessionId}" id="__webMap2__" name="__webMap2__" frameBorder="0" scrolling="auto" top="0" width="100%" height="100%"></iframe>', title: 'Map2', autoScroll:true }] }), ..... [/code] 其中map2.html中的内容为: [code="java"] <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" name="mapObj2" id="mapObj2" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="690" height="510"> <param name="movie" value="map2.swf" /> <param name="isShowStandardPath" value="1" /> <embed src=map2.swf quality=high pluginspage='http://www.macromedia.com/shockwave/download/index.cgi?P1_Pr&nbsp;od_Version=ShockwaveFlash' type='application/x-shockwave-flash' width=690 height=510></embed> </object> [/code] 点击“显示Map2”的JS方法: [code="java"] function showMap2(){//打开第二个TAB页面并获取Flash对象 window.top.maximizeFlash();//最大化MAP2 var webFrame = window.top.document.getElementById("__webMap2__"); var flashObj = webFrame.contentWindow.document.getElementById("mapObj2");//mapObj2为第二个Tab指向页面的object id //****************************** //这里取不到flashObj,报脚本错误,当把activeTab改成1的时候,就可以得到 //但是需求是默认activeTab只能是0 //****************************** } /** * 最大化MAP2区域,并显示Map2中的FLASH */ function maximizeFlash(){ Ext.getCmp('webGisId').expand(true); Ext.getCmp('webGisId').tools['maximize'].dom.click(); Ext.getCmp('flashId').setActiveTab(1); //这里修改也无效 } [/code] 因为对EXT不太熟,希望熟悉的人可以指点一下,谢谢!
xmlHttp.open("GET",url,true);执行以后既不报错,也没有访问到servlet,这是为什么?
首先下面是获取XMLHttpRequest对象的方法,应该是没有问题的。 ``` //获得的XmlHttp对象的函数 function createXmlHttp(){ //对大对数浏览器适用 var xmlHttp; if(window.XMLHttpRequest){ xmlHttp = new XMLHttpRequest(); } //考虑到浏览器的兼容性问题 if(window.ActiveXObject){ xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); if(!xmlHttp){//如果还是没有获取到采用另一种方法 xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } } return xmlHttp; } ``` 下面是获取到XMLHttpRequest对象并调用open()方法传递参数给servlet。 调用以后就是没反应,不报错,servlet也没有被执行。 如果直接在浏览器上访问该servlet是可以的,这说明我的web.xml配置应该也是正确的,servlet也没有问题。想不出哪里还会出现问题了,希望这个问题能得到解决 ``` var xmlHttp; function getMoreContents(){ //首先获取用户的输入 var content = document.getElementById("keyword"); if(content.value == ""){ return; } //给服务器发送用户输入的内容,因为采用的是ajax异步发送 //所以需要使用一个对象,XmlHttpRequest对象 xmlHttp = createXmlHttp(); //要给服务器发送数据 var url = "search?keyword="+escape(content.value);//escape防止中文输入问题 //true表示异步 xmlHttp.open("get",url,true);//get请求方式不需要内容体,url为要访问的servlet的路径 ```
用react ajax获取到json数据后怎么通过map方法循环输出??
刚开始学react,从react 的ajax方法从后台php中获取返回的数据,并输出,卡在不知道如何输出上了。。代码如下, <script type="text/babel"> class ListGet extends React.Component { constructor() { super(); this.state = {list:''}; } componentDidMount() { this.serverRequest = $.get("listindex.php",function (data,status) { {/*this.setState({ list:(eval('(' + data + ')'))[0].id });*/} const numbers = eval('(' + data + ')'); listItems = numbers.map((numbers) => <li>{numbers.id}</li> ); }.bind(this)); } componentWillUnmount() { this.serverRequest.abort(); } const listItems; render() { return ( <div> {/*this.state.list*/} {listItems} </div> ); } } ReactDOM.render( <ListGet />, document.getElementById('app') ) </script> 我后台返回的是json字符串,我先把它json对象化,然后想用map方法输出,但是怎么写都报错。。我想问下应该怎样写才对??
jsoup不能获取html的全部内容?
我用 ``` Document doc=Jsoup.connect("http://www.baidu.com").get(); System.out.println(doc); ``` 只能得出js代码,如图所示: ![图片说明](https://img-ask.csdn.net/upload/201902/24/1550992419_470168.jpg) 但是却可以通过doc.getElementById("ul"); 获取里面的标签值。 这是怎么回事呢?? ------------------------------------------------ 然后我用 ``` // 将string转成url对象 URL realUrl = new URL(url); URLConnection connection = realUrl.openConnection(); connection.connect(); in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"utf-8")); String line; while ((line = in.readLine()) != null) { result += line; } ``` 这种方式可以获取到网页所有的html代码。 哪位大神能给小弟指点下怎么回事?谢谢啦。
Ajax异步处理跳转不了
这是第一个jsp页面的代码,可以正常进入AjaxServlet ``` var xmlHttpRequest=null; //页面加载 window.onload=function(){ //获取按钮对象 var but=document.getElementById("login"); but.onclick=function(){ //处理ajax //对浏览器判断 if (window.ActiveXOject) { //IE xmlHttpRequest=new ActiveXOject(Microsoft.XMLHTTP); }else{ xmlHttpRequest=new XMLHttpRequest(); } //获取内容 var loginname=document.getElementById("loginname").value; var upassword=document.getElementById("upassword").value; var inputRand=document.getElementById("inputRand").value; //打开链接 xmlHttpRequest.open("get","AjaxServlet?loginname="+loginname+"&upassword="+upassword+"&inputRand="+inputRand+"&type=1"+"&random="+new Date().getTime(),true); //回调函数 xmlHttpRequest.onreadystatechange=AjaxCallBack; //发送 xmlHttpRequest.send(null); } }; //创建回调函数 function AjaxCallBack(){ if (xmlHttpRequest.readyState==4) { if (xmlHttpRequest.status==200) { //读取后台回传的数据 var content=xmlHttpRequest.responseText; var divObject=document.getElementById("resultdiv"); divObject.innerHTML=content; if (content=="登录成功") { window.location.href="index.jsp"; } } } } ``` 这是第二个jsp页面的代码,执行之后没有进入后台AjaxServlet,路径是没有错的 而且不光是进不了AjaxServlet,把URL改成随便的一个JSP页面或者Servlet也跳不过去 ``` var xmlHttpRequest=null; //页面加载 window.onload=function(){ //获取按钮对象 var but=document.getElementById("OK"); but.onclick=function(){ //处理ajax //对浏览器判断 if (window.ActiveXOject) { //IE xmlHttpRequest=new ActiveXOject(Microsoft.XMLHTTP); }else{ xmlHttpRequest=new XMLHttpRequest(); } //获取内容 var oldpassword=document.getElementById("oldpassword").value; var newpassword=document.getElementById("newpassword").value; var renewpassword=document.getElementById("renewpassword").value; //打开链接 //alert("执行到这里"); xmlHttpRequest.open("get","../../AjaxServlet?oldpassword="+oldpassword+"&newpassword="+newpassword+"&renewpassword="+renewpassword+"&type=2",true); //回调函数 xmlHttpRequest.onreadystatechange=AjaxCallBack; //发送 xmlHttpRequest.send(null); } }; //创建回调函数 function AjaxCallBack(){ if (xmlHttpRequest.readyState==4) { if (xmlHttpRequest.status==200) { //读取后台回传的数据 var content=xmlHttpRequest.responseText; var divObject=document.getElementById("resultdiv"); divObject.innerHTML=content; } } } ``` 我是初学者,如果是写法不对,想请教一下怎样在一个项目里面的多个JSP页面实现异步处理
uploadify浏览器不兼容谷歌可以上传图片成功 但是Firefox IE 都出现http error
具体代码如下 $('#txtImgurl').uploadify( {'uploader':'js/upload/upload/uploadify.swf?ver=' + Math.random(), 'script':'/doImgUp.jsp', 'cancelImg':'js/upload/upload/cancel.png', 'auto':false, 'folder':'upload', 'multi':true, 'simUploadLimit':99, 'buttonImg':'js/upload/upload/upimg.gif', 'fileExt':'*.gif;*.png;*.jpg;*.bmp', 'fileDesc':'*.gif,bmp,jpg,png等图片文件', 'queueID':'divup', 'sizeLimit':10240000000, 'onCancel':function(event, ID, fileObj, response, data){ // 取消上传事件 }, 'onComplete': function(event, ID, fileObj, response, data) { //获取上传文件名字 var show=document.getElementById("showfilename").value; document.getElementById("showfilename").value=show+response; var div=document.getElementById("showdiv").innerHTML; document.getElementById("showdiv").innerHTML=div+response; }}); 下面是doImgUp.jsp 处理内容 String savePath=request.getRealPath("/upload/image"); //设置文件最大容量 int maxSize=10*10*1024*1024; //创建文件上传请求域对象和重新命名 MultipartRequest req=new MultipartRequest(request,savePath,maxSize,"utf-8",new RenamePolicyCos()); //返回文件名 String files=FileUp.uploadfiles(req); //处理完后,将文件名返回到界面中 out.print(files);
如何将摄像头截取的图像上传到服务器
这是前段调取摄像头进行截图的代码 ``` <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>web RTC 测试</title> <style> .booth { width:400px; background:#ccc; border: 10px solid #ddd; margin: 0 auto; } </style> </head> <body> <div class="booth"> <video id="video" width="400" height="300"></video> <button id='tack'>拍照</button> <input type="button" onclick="uploadImage();" value="上传"/> <canvas id='canvas' width='400' height='300'></canvas> <img id='img' src=''> </div> <script> var video = document.getElementById('video'), canvas = document.getElementById('canvas'), snap = document.getElementById('tack'), img = document.getElementById('img'), vendorUrl = window.URL || window.webkitURL; //媒体对象 navigator.getMedia = navigator.getUserMedia || navagator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; navigator.getMedia({ video: true, //使用摄像头对象 audio: false //不适用音频 }, function(strem){ console.log(strem); video.src = vendorUrl.createObjectURL(strem); video.play(); }, function(error) { //error.code console.log(error); }); snap.addEventListener('click', function(){ //绘制canvas图形 canvas.getContext('2d').drawImage(video, 0, 0, 400, 300); //把canvas图像转为img图片 img.src = canvas.toDataURL("image/png"); }); </script> </body> </html> ``` 我现在想把获取的图片上传到服务器,具体上传的代码应该怎么写?(如果要链接后台,后台是Java)
小白求救!各位大神麻烦帮我看看这个select显示的内容为什么不变化
``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> //这个方法是点击年份下拉框后显示1900至今的所有年份 function GetYear() { var yearNode = document.getElementById("year"); //要调用Date的方法,就必须创建其对象,不能直接用类名调用 var date = new Date(); //这里获取的是从1900年到现在的经过的年数 var year = date.getFullYear(); //alert(time);//测试代码 //要对之前的数据进行删除,否则会累加,不能对i进行变化,否则会无法全部删除 //在删除之前要先获取yearNode的子节点个数 var children = yearNode.childNodes; //这里之前出错了,因为忘记加上.length了 for (var i = 2; i < children.length;) { //alert(children.length); yearNode.removeChild(children[i]); } //yearNode.length = 1; //这里是将各个年份作为option添加进代表年份的select下拉框中 for (var i = 1900; i <= year; i ++) { var option = document.createElement("option"); option.innerHTML = i; //option.value = i; yearNode.appendChild(option); } } //这个方法是年份下拉框的内容发生变化时会运行的内容 function ChooseTime() { /*var yearNode = document.getElementById("year"); //要调用Date的方法,就必须创建其对象,不能直接用类名调用 var date = new Date(); //这里获取的是从1900年到现在的经过的年数 var year = date.getFullYear(); //alert(time);//测试代码 yearNode.length = 1; //这里是将各个年份作为option添加进代表年份的select下拉框中 for (var i = 1900; i <= year; i ++) { var option = document.createElement("option"); option.innerHTML = i; yearNode.appendChild(option); }*/ //月份 var monthNode = document.getElementById("month"); monthNode.length = 1; for (var i = 1; i <= 12; i ++) { var option = document.createElement("option"); option.innerHTML = i; option.value = i; monthNode.appendChild(option); } //日期 var dateNode = document.getElementById("date"); dateNode.length = 1; if(monthNode.value == 1|| monthNode.value == 3|| monthNode.value == 5|| monthNode.value == 7|| monthNode.value == 8|| monthNode.value == 10|| monthNode.value == 12) { for (var i = 1; i <= 31; i ++) { var option = document.createElement("option"); option.innerHTML = i; dateNode.appendChild(option); } } else if (monthNode.value == 4|| monthNode.value == 6|| monthNode.value == 9|| monthNode.value == 11) { for (var i = 1; i <= 30; i ++) { var option = document.createElement("option"); option.innerHTML = i; dateNode.appendChild(option); } } else if(monthNode.value == 2&& yearNode.value%4 == 0) { for (var i = 1; i <= 29; i ++) { var option = document.createElement("option"); option.innerHTML = i; dateNode.appendChild(option); } } else if(monthNode.value == 2&& yearNode.value%4 != 0) { for (var i = 1; i <= 28; i ++) { var option = document.createElement("option"); option.innerHTML = i; dateNode.appendChild(option); } } } </script> </head> <body> <select id="year" onclick="GetYear()" onchange="ChooseTime()"> <option>请选择</option> </select>年 <select id="month" onchange="ChooseTime()"> <option>请选择</option> </select>月 <select id="date"> <option>请选择</option> </select>日 </body> </html> ``` 情况就是这么个情况,option倒是添加进去了,而且onchange也触发了,但是年份那个框显示的内容就是不变化,不知道问题出在哪了,小白求各位大神解救。
前端js实现web页面导出Excel,乱码问题
### 以下是我用的js: ### 使用以下代码导出的Excel文件在WPS中打开好像是正常的,但是在office中打开时,会出现以下提示(我用的是office 2013版的): ![图片说明](https://img-ask.csdn.net/upload/201712/25/1514186548_925715.png) ### 而且有的时候是乱码的(office 2010版本的出现过乱码的),而有的时候又是正常显示的,具体有什么规律在里面我不清楚。怎么解决这个问题,希望得到你们的帮助。挺急的! ``` var idTmr; function getExplorer() { var explorer = window.navigator.userAgent ; //ie if (explorer.indexOf("MSIE") >= 0) { return 'ie'; } //firefox else if (explorer.indexOf("Firefox") >= 0) { return 'Firefox'; } //Chrome else if(explorer.indexOf("Chrome") >= 0){ return 'Chrome'; } //Opera else if(explorer.indexOf("Opera") >= 0){ return 'Opera'; } //Safari else if(explorer.indexOf("Safari") >= 0){ return 'Safari'; } } function Cleanup() { window.clearInterval(idTmr); CollectGarbage(); } var tableToExcel = (function() { var uri = 'data:application/vnd.ms-excel;base64,', template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>', base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) }, format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) } return function(table, name) { if (!table.nodeType) table = document.getElementById(table); var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML} window.location.href = uri + base64(format(template, ctx)) } })(); export function method1(tableid){ //整个表格拷贝到EXCEL中 if(getExplorer()=='ie') { var curTbl = document.getElementById(tableid); var oXL = new ActiveXObject("Excel.Application"); //创建AX对象excel var oWB = oXL.Workbooks.Add(); //获取workbook对象 var xlsheet = oWB.Worksheets(1); //激活当前sheet var sel = document.body.createTextRange(); sel.moveToElementText(curTbl); //把表格中的内容移到TextRange中 sel.select; //全选TextRange中内容 sel.execCommand("Copy"); //复制TextRange中内容 xlsheet.Paste(); //粘贴到活动的EXCEL中 oXL.Visible = true; //设置excel可见属性 try { var fname = oXL.Application.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (*.xls), *.xls"); } catch (e) { print("Nested catch caught " + e); } finally { oWB.SaveAs(fname); oWB.Close(savechanges = false); //xls.visible = false; oXL.Quit(); oXL = null; //结束excel进程,退出完成 //window.setInterval("Cleanup();",1); idTmr = window.setInterval("Cleanup();", 1); } }else{tableToExcel(tableid)} }; ```
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
Linux(服务器编程):15---两种高效的事件处理模式(reactor模式、proactor模式)
前言 同步I/O模型通常用于实现Reactor模式 异步I/O模型则用于实现Proactor模式 最后我们会使用同步I/O方式模拟出Proactor模式 一、Reactor模式 Reactor模式特点 它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将时间通知工作线程(逻辑单元)。除此之外,主线程不做任何其他实质性的工作 读写数据,接受新的连接,以及处...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
进程通信方式总结与盘点
​ 进程通信是指进程之间的信息交换。这里需要和进程同步做一下区分,进程同步控制多个进程按一定顺序执行,进程通信是一种手段,而进程同步是目标。从某方面来讲,进程通信可以解决进程同步问题。 ​ 首先回顾下我们前面博文中讲到的信号量机制,为了实现进程的互斥与同步,需要在进程间交换一定的信息,因此信号量机制也可以被归为进程通信的一种方式,但是也被称为低级进程通信,主要原因为: 效率低:一次只可操作少量的...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
听说了吗?阿里双11作战室竟1根网线都没有
双11不光是购物狂欢节,更是对技术的一次“大考”,对于阿里巴巴企业内部运营的基础保障技术而言,亦是如此。 回溯双11历史,这背后也经历过“小米加步枪”的阶段:作战室从随处是网线,交换机放地上的“一地狼藉”;到如今媲美5G的wifi网速,到现场却看不到一根网线;从当年使用商用AP(无线路由器),让光明顶双11当天断网一分钟,到全部使用阿里自研AP……阿里巴巴企业智能事业部工程师们提供的基础保障...
在阿里,40岁的奋斗姿势
在阿里,40岁的奋斗姿势 在阿里,什么样的年纪可以称为老呢?35岁? 在云网络,有这样一群人,他们的平均年龄接近40,却刚刚开辟职业生涯的第二战场。 他们的奋斗姿势是什么样的呢? 洛神赋 “翩若惊鸿,婉若游龙。荣曜秋菊,华茂春松。髣髴兮若轻云之蔽月,飘飖兮若流风之回雪。远而望之,皎若太阳升朝霞;迫而察之,灼若芙蕖出渌波。” 爱洛神,爱阿里云 2018年,阿里云网络产品部门启动洛神2.0升...
关于研发效能提升的思考
研发效能提升是最近比较热门的一个话题,本人根据这几年的工作心得,做了一些思考总结,由于个人深度有限,暂且抛转引入。 三要素 任何生产力的提升都离不开这三个因素:人、流程和工具,少了其中任何一个因素都无法实现。 人,即思想,也就是古人说的“道”,道不同不相为谋,是制高点,也是高层建筑的基石。 流程,即方法,也是古人说的“法”。研发效能的提升,也就是要提高投入产出比,既要增加产出,也要减...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯
程序员该看的几部电影
##1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
入职阿里5年,他如何破解“技术债”?
简介: 作者 | 都铎 作为一名技术人,你常常会听到这样的话: “先快速上线” “没时间改” “再缓一缓吧” “以后再解决” “先用临时方案处理” …… 当你埋下的坑越来越多,不知道哪天哪位同学就会踩上一颗雷。特别赞同“人最大的恐惧就是未知,当技术债可说不可见的时候,才是最让人不想解决的时候。” 作为一个程序员,我们反对复制粘贴,但是我们经常会见到相似的代码,相同的二方包,甚至整个代码...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
Java坑人面试题系列: 包装类(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。 这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。 如果你看过往期的问题,就会发现每一个都不简单。 这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad
深度学习入门笔记(十八):卷积神经网络(一)
欢迎关注WX公众号:【程序员管小亮】 专栏——深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献。 2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。 3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。 4)此属于第一版本,若有错误,还需继续修正与...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
节后首个工作日,企业们集体开晨会让钉钉挂了
By 超神经场景描述:昨天 2 月 3 日,是大部分城市号召远程工作的第一天,全国有接近 2 亿人在家开始远程办公,钉钉上也有超过 1000 万家企业活跃起来。关键词:十一出行 人脸...
Java基础知识点梳理
Java基础知识点梳理 摘要: 虽然已经在实际工作中经常与java打交道,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散。恰好利用这段时间重新认识下java,并对一些常见的语法和知识点做个总结与回顾,一方面为了加深印象,方便后面查阅,一方面为了学好java打下基础。 Java简介 java语言于1995年正式推出,最开始被命名为Oak语言,由James Gosling(詹姆
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
你也能看懂的:蒙特卡罗方法
蒙特卡罗方法,也称统计模拟方法,是1940年代中期由于科学技术的发展和电子计算机的发明,而提出的一种以概率统计理论为指导的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法 蒙特卡罗方法可以粗略地分成两类:一类是所求解的问题本身具有内在的随机性,借助计算机的运算能力可以直接模拟这种随机的过程。另一种类型是所求解问题可以转化为某种随机分布的特征数,比如随机事件出现的概率,或...
相关热词 c# 为空 判断 委托 c#记事本颜色 c# 系统默认声音 js中调用c#方法参数 c#引入dll文件报错 c#根据名称实例化 c#从邮件服务器获取邮件 c# 保存文件夹 c#代码打包引用 c# 压缩效率
立即提问