js动态改变button的onclick属性的问题

我现在有这样一个问题:
点一个按钮时,每点一次,会改变它的onclick事件为其它函数

js:
function fun1(curObj) {
curObj.onclick="fun1(curObj);";
alert("fun1 occurred!");

}

function fun2(curObj) {
curObj.onclick="fun2(curObj);";
alert("fun2 occurred!");
}

我觉得在onclick的赋值有问题,,,不知杂个写啊....

9个回答

[code="html"]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">


New Document <!-- function fun1() { var curObj=document.getElementById("button"); curObj.onclick=fun2; alert("fun1"); } function fun2() { var curObj=document.getElementById("button"); curObj.onclick=fun1; alert("fun2"); } //-->




[/code]

不知道楼主是不是这个意思

使用jquery中内置函数可轻松到达你的要求。

直接这样写

[code="js"]

js:
function fun1() {
alert("fun1 occurred!");

} [/code]

toggle()函数

直接这样写

[code="js"]

js:
function fun1() {
alert("fun1 occurred!");

} [/code]

如果你用JQUERY

更简单
直接这样写

[code="js"]

js:
$("#aa").bind('click',fun1());

function fun1() {
alert("fun1 occurred!");

} [/code]

比如[code="javascript"]$('#target').toggle(function() {
alert('First handler for .toggle() called.');
}, function() {
alert('Second handler for .toggle() called.');
});[/code]

应该这么写的

[code="java"]
function fun1(curObj) {
curObj.onclick= function(){fun2(curObj);};
alert("fun1 occurred!");

} 

function fun2(curObj) {
curObj.onclick=function(){fun1(curObj);};
alert("fun2 occurred!");
}

[/code]

当你点击的时候,输出如下:
[color=darkblue]First handler for .toggle() called.
Second handler for .toggle() called.
First handler for .toggle() called.
Second handler for .toggle() called.
First handler for .toggle() called.[/color]

var funcs = []; var func1 = function() {alert("func1");}; var func2 = function() {alert("funct2"); }; var func3 = function() {alert("funct3"); }; function dynamicFunc() { if(funcs.length < 1) { funcs.push(func1); funcs.push(func2); funcs.push(func3); }; var theLastFunc = funcs.pop(); theLastFunc.call(this); }

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
js中cssText可以用变量赋值吗
``` <script type="text/javascript"> window.onload = function(){ var attrInt = document.getElementsByTagName('input')[0].value; var attrNum = document.getElementsByTagName('input')[1].value; var enterBtn = document.getElementsByTagName('button')[0]; var resetBtn = document.getElementsByTagName('button')[1]; var changeBox = document.getElementById('willBox'); enterBtn.onclick = function(){ changeBox.style.cssText = '"attrInt":"attrNum";' ; } resetBtn.onclick = function(){ changeBox.style.cssText = ""; } console.log(typeof attrInt); console.log(attrInt); console.log(typeof attrNum); console.log(attrNum); } </script> ``` 运行之后实现不了用户输入值,改变div属性的想法。 代码中“ changeBox.style.cssText = '"attrInt":"attrNum"这一段还望解惑,谢谢!
简单练习:CSS多个类名,样式为何不见了?
下面是http://www.fgm.cc/learn/lesson1/01.html这个练习的代码实现 html: ``` <!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8"> <title>控制div属性</title> <link rel="stylesheet" href="div.css"> </head> <body> <div id="btn"><input type="button" value="变宽"></input><input type="button" value="变高"></input><input type="button" value="变色"></input><input type="button" value="隐藏"></input><input type="button" value="重置"></input></div> <div id="change" class="change4 change3"></div> <script src="div.js"></script> </body> </html> ``` css: ``` #btn { width: 240px; margin: 0 auto; } .change0 { width: 200px; } .change1 { height: 200px; } .change2 { background-color: red; } .change3 { display: none; } .change4 { width: 100px; height: 100px; background-color: black; margin: 10px auto; display: block; } ``` javascript: ``` window.onload = function(){ var btn=document.getElementById("btn").childNodes; var change = document.getElementById("change"); for(var i=0;i<5;i++){ btn[i].onclick = (function (n){ return function(){ change.className = change.className + (" change"+n); } })(i); } } ``` 我想的思路很简单:就是点击按钮,添加类名,改变样式。在控制台可以看到类名是添加上了,但是样式没有改变。不知是何原因,还请各位朋友指点迷津!谢谢
我想点击查询的时候同时让table框和总次数的内容都根据时间而改变,现在是只有table框变,帮忙给看看,谢谢啦
![图片说明](https://img-ask.csdn.net/upload/201912/03/1575363172_93764.png) ``` <form class="form-horizontal" role="form" style="padding-top:80px;" method="post"> <div class="form-group"> <div class="col-sm-offset-1 col-sm-10"> <label for="startDate" class="control-label">请输入日期:</label> <input type="text" id="logsTime" /> <input type="button" onclick="submitForm()" value="查询"/> </div> </div> <div class="form-group"> <div class="col-sm-offset-1 col-sm-10"> <div id="clickMarkAll"></div> <table id="list" ></table> </div> </div> </form> <script type="text/javascript"> $(function(){ loadList("2019-01-01 00:00"); }) function loadList(startDate) { startDate=$("#logsTime").val(); $("#list").bootstrapTable('destroy'); // 在初始化table之前,要将table销毁,否则会保留上次加载的内容 $('#list').bootstrapTable({ method : 'post', // 请求方式(*) url : '/selectClickMark?logsTime='+startDate, // 请求后台的URL(*) striped : true, // 是否显示行间隔色 cache : false, // 是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*) showColumns: true, showExport: true, exportDataType: "all", pageSize:10, pagination: true, //是否显示分页(*) showFooter:true, showColumns : true, // 是否显示所有的列 minimumCountColumns : 1, // 最少允许的列数 columns : [ { title : '玩家id', field : 'userId', },{ title : '问号被点击次数', field : 'clickMark', }] }); } $(function(startDate){ startDate=$("#logsTime").val(); $.ajax({ url:'/clickMarkAll?logsTime='+startDate, type:'get', dataType:'json', success:function(data){ for(i in data) { var h; h=data[i] $("#clickMarkAll").append('<h5 style="color:red;"><a onclick="submitTwo('+startDate+')">总次数:'+h+'</a></h5>') } } }); }) </script> </body> ```
oBtn.length - 1不是一个确定的值吗,为什么能遍历五个input?
<DOCTYPE! html> <html> <head> <meta charset="utf-8"> <title>改变属性</title> <style> body { text-align: center; } #continer { width: 500px; margin: 0 auto; text-align: center; } #down { width: 100px; height: 100px; margin: 10 auto; display: block; background: black; } </style> <script> var changeStyle = function (elem, attr, value) { elem.style[attr] = value }; window.onload = function () { var oBtn = document.getElementsByTagName("input"); var oDiv = document.getElementById("down"); var oAtt = ["width","height","background","display","display"]; var oVal = ["200px","200px","red","none","block"]; for (var i = 0; i < oBtn.length; i++) { oBtn[i].index = i; oBtn[i].onclick = function () { this.index == oBtn.length - 1 && (oDiv.style.cssText = ""); changeStyle(oDiv, oAtt[this.index], oVal[this.index]) } } }; </script> </head> <body> <div id="container"> <input type="button" value="变高"> <input type="button" value="变宽"> <input type="button" value="变色"> <input type="button" value="隐藏"> <input type="button" value="重置"> <div id="down"></div> </div> </body> </html>
javascript验证checkbox,求答案!!!
主页上有一行行订单记录,每行最前面有个checkbox,最上面一行(标题行)有个全选的checkbox,订单有状态属性,分别是三种:新出、处理中、处理完成。 主页上还有一个处理按钮,用来改变订单的状态。 当 不选中行 的时候,点击处理按钮时,希望用JavaScript弹出对话框提示:请选择订单! 当选中的订单的状态是 新出 的订单时,弹出对话框提示:是否处理? 当选中的订单的状态不是新出时,弹出对话框提示:选择有误,请重新选择! 怎么样才能实现呀?不用后台验证,望前辈告知!!! 我的想法是在javascript中先获取所选中订单的一个或者多个ID,循环得到一个或者多个对象,再得到他们的状态,只要有一个不满足条件就break,将中间设定的参考变量变为相反。 具体怎么弄,还望大家帮忙,我是刚入行的小白,谢谢!下面是我的jsp代码,头部的javascript代码、input标签里的onclick写的不对,望改正,其他地方改不得呀~~~ <%@ page language="java" contentType="text/html; charset=UTF-8"%> <%@ include file="/common/taglibs.jsp"%> <html> <head> <link href="common/common.css" type="text/css" rel="stylesheet"> <script src="common/sortabletable.js" type="text/javascript"></script> <script src="common/common.js" type="text/javascript"></script> <script type="text/javascript" src="common/popcalendar.js"></script> <script type="text/javascript"> function validateState(ids,alertMsg,theFrm,actionUrl){ var a=false; for(var i=0;i<document.all(ids).length;i++){ if(document.all(ids)[i].checked==true){ a=true; } } if(a){ if(confirm(alertMsg)){ if(""!=actionUrl){ theFrm.action=actionUrl; } theFrm.submit(); } }else{ alert("请选择新开订单"); return false; } } </script> </head> <body> <div id="rightlayout" style="width: 700px"> <div style="text-align: left; color: red"> </div> <html:form action="/WorkOrderAction"> <br> <input type="button" name="payout" class="button" value="处理" onclick="validateState('ids','是否处理',this.form,'<c:url value="WorkOrderAction.do?method=changeState"/>')"> <br> <!-- 分页及排序 --> <c:import url="/common/pager.jsp" /> <p> <table width="100%" class="sort-table" id="itemsList" align="right"> <thead> <tr align="center"> <td><input type="checkbox" name="multipleSelect" onclick="checkBoxSelectAll('ids');" /> </td> <td>订单号</td> <td>订单主题</td> <td>状态</td> <td>下单时间</td> </tr> </thead> <tbody> <c:forEach var='vo' items="${ITEMS_COLLECTION}"> <tr onmouseout="changeColor(this,false,'orange');" onmouseover="changeColor(this,true,'orange')"> <td><input type="checkbox" name="ids" value="${vo.workId}"/> </td> <td>${vo.orderNumber}</td> <td>${vo.orderTheme}</td> <td>${stateMap[vo.stateId]}</td> <td><fmt:formatDate value="${vo.sendDate}" pattern="yyyy-MM-dd HH:mm" /> </td> </tr> </c:forEach> </tbody> <tfoot> <tr> <td colspan="9"></td> </tr> </tfoot> </table> </html:form>
jquery 单击事件 局部变量 越界 问题
问题描述 从数据库中读取出N条记录 每条记录都对应一个按钮 使用Jquery为每个按钮增加一个单击事件 单击按钮 所在行要进行更新的单元格数据 变成输入框可以更新所在行的数据 JavaScript文件代码 [code="js"] $(document).ready(function() { // 为修改按钮注册单击事件 var modifies = $(".modify"); for (var i =0; i < modifies.length; i++) { $(modifies[i]).click(function() { // 定位该修改按钮所在表单中typeName所在Td位置 // 注:查找的是Id alert(i); var typeName = "#" + (i+1) + "_typeNameCn"; var typeNameTd = $(typeName); // 保存单元格中的数据 var text = typeNameTd.text(); // 清空td里面的内容 typeNameTd.empty(); alert(text); // 建立一个文本框,即一个input的元素节点 // 注:name属性的命名要和action中的命名一致 var input = $("<input type=\"text\" name=\"mt.typeNameCn\" />"); // 设置文本框的值是保存起来的文本内容 input.attr("value", text); // 将文本框中的内容加入到td中 typeNameTd.append( input ); // 隐藏"修改"按钮 $(modifies[i]).css("display","none"); // 找到提交按钮,让提交按钮显示出来 var submit = "#" + i +"_submit"; $(submit).css("display","block"); }); } }); [/code] jsp文件代码 [code="java"] <table> <tr> <td> 杂志类型编号 </td> <td> 杂志类型名称 </td> <td> 操作 </td> </tr> <s:iterator value="mts"> <s:form name="editMagazineTypeForm" method="post" theme="simple"> <tr> <td> <s:property value="typeId" /> &nbsp; </td> <% //指定对应的id值,便于定位单元格 %> <td id="${typeId}_typeNameCn"> <s:property value="typeNameCn" /> </td> <td> <s:hidden name="mt.typeId" value="%{typeId}"></s:hidden> <s:submit value="修改fdfdf" onclick="this.disabled='true'" cssStyle="display:none;"></s:submit> <button class="modify" onclick="%{typeId}"> 修改 </button> </td> </tr> </s:form> </s:iterator> </table> [/code] 问题:当我单击按钮之后,经过断点测试发现 for循环中的i变量不是0而是2 也就是说局部变量在完成循环之后 并没有从内存中清除 而是保留了下来 继续递增 不知道这样的描述是否正确 请帮忙告知如何解决 谢谢 [b]问题补充:[/b] 是的每次都是打印的2 就是i最后一次参与循环的值 [b]问题补充:[/b] ********************************************************* 我是新来的 感觉自己提出的问题自己不能回答 就做问题补充了 高手别见怪啊 ********************************************************* each方法比较好 进行遍历效果不错 但是我想实现的是 "为查找到的所有按钮添加单击事件" 如何做呢? 我使用上面我写的方法为每个按钮添加了单击事件 但是 i的值不变了 执行上面的JS代码 如果i的值不变的话 相当于为多个按钮 注册了相同的单击事件 我的目的是 通过单击按钮直接更新 "相应" 的数据记录
select2 用属性选择器 动态添加 只有新添加的标签有渲染 原有标签的渲染没了
![图片说明](https://img-ask.csdn.net/upload/201808/01/1533091747_378076.png) js代码 update界面显示部分 ``` // 显示修改关键字症状界面 function updateView(id, system_id) { $("#btntype").val(1); $("#Submit1").click(function() { add(1); }); $ .ajax({ type : "POST", url : "/erzhentang/manage/forAjax.do?requestType=12.1", data : "id=" + id + "&system_id=" + system_id, // 发送到服务器的数据默认id是结论id success : function(msg) { $("#xuewei_id").val("1,2,3").select2(); /* alert(msg); */ var json = eval('(' + msg + ')'); document.getElementById("addModel").style.display = "block"; document.getElementById("id1").value = json.earScanJielun.id; document.getElementById("system_id1").value = json.earScanJielun.system_id; /* 遍历所属系统下所有 耳穴频扫疾病项 */ var arrESJ = eval(json.listEarScanJibing);// arrESJ是一个数组 var checkESJ = document.getElementById("jibing_num1"); var str2 = ""; for (var j = 0; j < arrESJ.length; j++) { str2 += "<option value=\"" + arrESJ[j].jibing_num + "\">" + arrESJ[j].name + "</option>"; var checkESJ2 = arrESJ[j].name; if (arrESJ[j].jibing_num == json.earScanJielun.jibing_num) {// 疾病编号人为控制每个编号都是唯一 arrESJ[j].name = "selected='selected'"; } $("#jibing_num1").html(str2); } document.getElementById("jibing_num1").value = json.earScanJielun.jibing_num; document.getElementById("jielun_rank1").value = json.earScanJielun.jielun_rank; document.getElementById("jielun1").value = json.earScanJielun.jielun; /* 下半截部分组合表动态展示修改和添加 */ var arrESC = eval(json.listEarScanCp);// arrESC是一个数组频扫结论组合表 var str = ""; var str1 = ""; for (var i = 0; i < arrESC.length; i++) { str += "<tr>"; str += "<td colspan=\"8\">"; str += "<div style=\"margin-left: 148px;\" id=\"earScanCp\">"; str += "<div style=\"float: left;\">"; str += "<textarea style=\"width: 50px;margin-left: -86px;position: absolute;\" id=\"cp_id\" name=\"cp_id\" >" + arrESC[i].id + "</textarea>"; str += "<select style=\"width: 60px;height: 36px;margin-left: 20px;\" id=\"gender\" name=\"gender\" >" var myselect = document.getElementById("gender");// 这个获取的是静态jsp页面里标签 /* * 下拉框主要是应展示项和所有下拉选项的值判断是否对应 分清主和客 * 所有展示项目为主表客表的某一项值和遍历主表的值对应 这里面 下拉框所有选项值是主表 */ var str1 = ""; for (var j = 0; j < myselect.options.length; j++) {// 下拉框是主家从静态页面获取并且遍历它 // alert("j值:" + myselect.options[j].value); str += "<option value=\"" + myselect.options[j].value + "\" " + (myselect.options[j].value == arrESC[i].gender ? "selected='selected'" : "") + ">" + myselect.options[j].text + "</option>"; } "</select>"; str += "<textarea style=\"width: 50px;margin-left: 10px;\" id=\"min_age\" name=\"min_age\" >" + arrESC[i].min_age + "</textarea>"; str += "<textarea style=\"width: 50px;margin-left: 10px;\" id=\"max_age\" name=\"max_age\" >" + arrESC[i].max_age + "</textarea>"; // str += "<textarea style=\"width: // 300px;margin-left:10px;\" id=\"xuewei_id\" // name=\"xuewei_id\" >" // + arrESC[i].xuewei_id + "</textarea>"; str +="<div id=\"selectSection\">"; str += "<select style=\"width: 300px;margin-left:10px;\" id=\"xuewei_id\" name=\"xuewei_id\"class=\"combox\" multiple >" str += "<optgroup label=\"小辈儿组\">"; str += "<option value=\"1\">心</option>"; str += "<option value=\"2\" " + "selected='selected'" + ">" + "肺" + "</option>"; str += "<option value=\"3\" " + "selected='selected'" + ">" + "小肠" + "</option>"; str += "<option value=\"4\">" + "口" + "</option>"; str += "<option value=\"5\">" + "食道" + "</option>"; str += "</optgroup>"; str += "</div>" $("#xuewei_id").val("1,2,3").select2(); str += "<textarea style=\"width: 220px;margin-left: 10px;\" id=\"chuzhen_id\" name=\"chuzhen_id\" >" + arrESC[i].chuzhen_id + "</textarea>"; str += "<select style=\"width: 60px;height: 36px;margin-left: 10px;\" id=\"bp\" name=\"bp\" >" var myselect1 = document.getElementById("bp");// 这个获取的是静态jsp页面里标签 for (var k = 0; k < myselect1.options.length; k++) {// 下拉框是主家从静态页面获取并且遍历它 // alert("j值:" + myselect1.options[k].value); str += "<option value=\"" + myselect1.options[k].value + "\" " + (myselect1.options[k].value == arrESC[i].bp ? "selected='selected'" : "") + ">" + myselect1.options[k].text + "</option>"; } "</select>"; str += "<textarea style=\"width: 50px; height: 36px;margin-left: 10px;margin-top: 0px;\" id=\"jielun_conform\" name=\"jielun_conform\">" + arrESC[i].jielun_conform + "</textarea>"; str += "</div>"; str += "<div >"; str += " <input type=\"button\" onclick=\"delRow(this," + arrESC[i].id + "," + arrESC[i].bianzhengId + ")\" value=\"删除\" id=\"deleteESC\" name=\"deleteESC\" style=\"float: left; margin-left:10px; margin-top: 5px;\">"; str += "</div>"; str += "</div>"; str += "</td>"; str += "</tr>"; /* 替换静态页面 */ $("#tbody1").html(str); select2Execute(); } } }); } ``` js代码add添加行 ``` // 添加行 频扫组合表信息 function addRow1() { var str = ""; str += "<tr>"; str += "<td colspan=\"8\">"; str += "<div style=\"margin-left: 148px;\" id=\"earScanCp\">"; str += "<div style=\"float: left;\">"; str += "<textarea style=\"width: 50px;margin-left: -86px;position: absolute;\" id=\"cp_id\" name=\"cp_id\" ></textarea>"; str += "<select style=\"width: 60px;height: 36px;margin-left: 20px;\" id=\"gender\" name=\"gender\" >" var myselect = document.getElementById("gender");// 这个获取的是静态jsp页面里标签 for (var j = 0; j < myselect.options.length; j++) {// 下拉框是主家从静态页面获取并且遍历它 str += "<option value=\"" + myselect.options[j].value + "\">" + myselect.options[j].text + "</option>"; } "</select>"; str += "<textarea style=\"width: 50px;margin-left: 10px;\" id=\"min_age\" name=\"min_age\" ></textarea>"; str += "<textarea style=\"width: 50px;margin-left: 10px;\" id=\"max_age\" name=\"max_age\" ></textarea>"; // str += "<textarea style=\"width: 300px;margin-left: 10px;\" // id=\"xuewei_id\" name=\"xuewei_id\" ></textarea>"; str +="<div id=\"selectSection\">"; str += "<select style=\"width: 300px;margin-left:10px;\" id=\"xuewei_id\" name=\"xuewei_id\" class=\"combox\" multiple >" str += "<optgroup label=\"小辈儿组\">"; str += "<option value=\"1\">心</option>"; str += "<option value=\"2\">" + "肺" + "</option>"; str += "<option value=\"3\">" + "小肠" + "</option>"; str += "<option value=\"4\">" + "口" + "</option>"; str += "<option value=\"5\">" + "食道" + "</option>"; str += "</optgroup>"; "</select>"; str += "</div>"; str += "<textarea style=\"width: 220px;margin-left: 10px;\" id=\"chuzhen_id\" name=\"chuzhen_id\" ></textarea>"; str += "<select style=\"width: 60px;height: 36px;margin-left: 10px;\" id=\"bp\" name=\"bp\" >" var myselect1 = document.getElementById("bp");// 这个获取的是静态jsp页面里标签 for (var k = 0; k < myselect1.options.length; k++) {// 下拉框是主家从静态页面获取并且遍历它 // alert("j值:" + myselect1.options[k].value); // alert("text值:" + myselect1.options[k].text); str += "<option value=\"" + myselect1.options[k].value + "\">" + myselect1.options[k].text + "</option>"; } "</select>"; str += "<textarea style=\"width: 50px; height: 36px;margin-left: 10px;\" id=\"jielun_conform\" name=\"jielun_conform\"></textarea>"; str += "</div>"; str += "<div >"; str += " <input type=\"button\" onclick=\"delRow(this)\" value=\"删除\" id=\"deleteESC\" name=\"deleteESC\" style=\"float: left; margin-left:10px; margin-top: 5px;\">"; str += "</div>"; str += "</div>"; str += "</td>"; str += "</tr>"; $("#rowTable1").append(str); // $("select[name='xuewei_id']").select2({ // $("#xuewei_id").select2().trigger(); // $("#xuewei_id").trigger('change') select2Execute(); } ``` 执行select2部分 ``` /* 执行select2方法 */ function select2Execute() { $(function() { // $("select[name='xuewei_id']").select2({ // $('select[id="xuewei_id"]').select2({ // $('#xuewei_id').select2({ // $("#selectSection").find("select.combox").select2({ $(".combox").select2({ placeholder : "请至少选择一个人名", tags : true, createTag : function(decorated, params) { return null; }, width : '256px' }); function formatState(state) { if (!state.id) { return state.text; } var $state = $('<span>' + state.text + '</span>'); return $state; } ; $('#sel_recommender').select2({ placeholder : "请选择一个人名", templateResult : formatState, width : '256px' }); }); } ```
动态添加行 获取input的ID
<%@ page language="java" pageEncoding="gb2312"%> <%@ page import="java.util.Collection,java.util.Iterator"%> <%@ page import="dy.web.beans.NewsClass" %> <%@ page import="dy.web.mgr.NewsClassMgr" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSF 'addnews.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <script type="text/javascript" src="FCKeditor/fckeditor.js"></script> <script type="text/javascript" src="FCKeditor/calendar/calendarShow.js"></script> <script src="./javascript/jquery.js" type="text/javascript"></script> <script src="./javascript/cookie.js" type="text/javascript"></script> <script language="javascript"> <!-- function go(i) { var temp =i; fPopUpCalendarDlg(temp); } --> </script> <script language="javascript" type="text/javascript"> <!-- function check_input(){ var topictest=document.addnewsfrom.Topic.value; var contenttest=document.addnewsfrom.contest.value; if(topictest==''){ alert('请输入新闻标题!'); return false; } } --> </script> </head> <body> <%!String attachfilename=""; %> <%[color=red]//后台传过来的参数[/color] attachfilename=(String)request.getAttribute("attachfilename"); System.out.println("接受到了"+attachfilename); if(attachfilename==null){ %> <script type="text/javascript"> alert("文件上传出错,请您重新上传!"); </script> <% }else{ %> <script type="text/javascript"> //要为输入框写入文件名 alert("到这来了1"); test('attachmentNum'); var temgetcook = getCookie('attachmentNum'); var affile=$('#attachmentFile'+temgetcook); var affilenametest =$('#attachmentNames'+temgetcook); alert("得到cookie的值是"+temgetcook); alert(affilenametest.val());//[color=red]在这里获得不了有效值为什么?[/color] alert("填充框"+affile.val()); alert("文件名测试二"+'<%=attachfilename%>'); </script> <% } %> <script type="text/javascript"> //上传附件 function uploadAttachment(n) { var af = $('#attachmentFile'+n); var affilename =$('#attachmentNames'+n); //检查是否选择了文件 if(af.val()=='') { alert('请选择要上传的文件'); return; } alert(af.val()); alert(affilename.val());//[color=red]在这里获得没有问题[/color] //将file移动至上传表单 $('#attachmentContent').empty(); $('#attachmentContent').append(af); //复制一个file放至原处 $('#afc'+n).append(af.clone().attr('value','')); //修改属性 af.attr('id',''); //其他表单 $('#attachmentNum').val(n); $('#attachmentForm').submit(); SetCookie ("attachmentNum",n); } </script> <form id="attachmentForm" action="servlet/UploadServlet" method="post" enctype="multipart/form-data" target="attachment_iframe" style="display:none;width:0px;height:0px;"> <span id="attachmentContent"></span> <input type="hidden" id="attachmentNum" name="attachmentNum" size="30"/> </form> <iframe name="attachment_iframe" frameborder="0" border="0" style="display:none;width:0px;height:0px;"></iframe> <form name="addnewsfrom" method="post" action="servlet/AddNewsServlet" onSubmit="return check_input()"> <font size="2"> <table width="100%" height="35" border="1" cellpadding="0" cellspacing="0"> <!--DWLayoutTable--> <tr> <td width="40%" bordercolor="#FF0000" bgcolor="#FF3333" height="35" align="left"><font color="#ffffff"><b>当前位置:新闻管理 - 添加新闻</b></font><br></td> <td width="40%" bordercolor="#FF0000" bgcolor="#FF3333" height="35" align=center><br></td> <td width="20%" bordercolor="#FF0000" bgcolor="#FF3333" height="35" align="right"> <input type="button" value="返回列表" onclick="window.location='servlet/NewsListServlet'"/> <input type="hidden" name="cid" value="4"/> </td> </tr> </table> <table width="100%" height="5" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="100%" height="5"> </td> </tr> </table> <table width="100%" height="" border="1" cellpadding="0" cellspacing="0"><!--DWLayoutTable--> <tr id="topic"> <td width="13%" height="30" align="right" bgcolor="#FFFF8E"><font color="#FF0000">*</font>标题:</td> <td height="30" colspan="4"> <input name="Topic" type="text" id="Topic" size="70" maxlength="255" /> </td> </tr> <tr> <td width="13%" height="" align="right" bgcolor="#FFFF8E">附件:</td> <td height="30" colspan="4"> <table id="attachTable" border="0"> <tr> <td align="center"><input type="button" onclick="addAttachLine();" value="增加"/></td> <td align="center">附件名称</td> <td align="center">附件地址</td> <td align="center">附件上传</td> </tr> </table> <textarea id="attachTr" style="display:none"> <tr id="attachTr{0}"> <td align="center"><a onclick="$('#attachTr{0}').remove();" href="javascript:void(0);" class="pn-opt">删除</a></td> <td align="center"><input type="text" id="attachmentNames{0}" name="attachmentNames"/></td> <td align="center"><input type="text" id="attachmentPaths{0}" name="attachmentPaths"/></td> <td align="center"> <span id="afc{0}"><input type="file" id="attachmentFile{0}" name="attachmentFile" size="12" style="width:160px"/></span> <input type="button" value="上传" onclick="uploadAttachment({0});"/> <input type="hidden" id="attachmentFilenames{0}" name="attachmentFilenames"/> </td> </tr> </textarea> <script type="text/javascript"> var attachIndex = 2; var attachTpl = $.format($("#attachTr").val()); function addAttachLine() { $('#attachTable').append(attachTpl(attachIndex++)); } </script> </td> </tr> <tr> <td width="100%" height="40" align="center" colspan="4" bgcolor="#FF3333"> <input type="submit" value="提交" onclick="return confirm('是否确定提交?')"/> <input type="reset" value="重置"/> </td> </tr> </table> </font> </form> </body> </html> 在上面代码中在未上传之前可以获得所要的值,但是在长传之后就是在后台上传处理之后就无法再次获得input的值!高手们请进啦!
动态添加name属性相同的select2标签多选下拉框 如何取值和赋值
**问题描述:** 所有下标值混合一块 ; **需要实现的效果:** 心 肺 小肠 对应id 分别1、2、3 作为一组 xuewei_id[0] 第二行 对应下标为 xuewei_id[1] ![图片说明](https://img-ask.csdn.net/upload/201808/01/1533115383_492903.png) ![图片说明](https://img-ask.csdn.net/upload/201808/01/1533116123_928546.png) 图3 这个是直接接受 select2 标签的穴位id ![图片说明](https://img-ask.csdn.net/upload/201808/01/1533116308_133310.png) js代码 ``` // 显示修改关键字症状界面 function updateView(id, system_id) { $("#btntype").val(1); $("#Submit1").click(function() { add(1); }); $ .ajax({ type : "POST", url : "/erzhentang/manage/forAjax.do?requestType=12.1", data : "id=" + id + "&system_id=" + system_id, // 发送到服务器的数据默认id是结论id success : function(msg) { $("#xuewei_id").val("1,2,3").select2(); /* alert(msg); */ var json = eval('(' + msg + ')'); document.getElementById("addModel").style.display = "block"; document.getElementById("id1").value = json.earScanJielun.id; document.getElementById("system_id1").value = json.earScanJielun.system_id; /* 遍历所属系统下所有 耳穴频扫疾病项 */ var arrESJ = eval(json.listEarScanJibing);// arrESJ是一个数组 var checkESJ = document.getElementById("jibing_num1"); var str2 = ""; for (var j = 0; j < arrESJ.length; j++) { str2 += "<option value=\"" + arrESJ[j].jibing_num + "\">" + arrESJ[j].name + "</option>"; var checkESJ2 = arrESJ[j].name; if (arrESJ[j].jibing_num == json.earScanJielun.jibing_num) {// 疾病编号人为控制每个编号都是唯一 arrESJ[j].name = "selected='selected'"; } $("#jibing_num1").html(str2); } document.getElementById("jibing_num1").value = json.earScanJielun.jibing_num; document.getElementById("jielun_rank1").value = json.earScanJielun.jielun_rank; document.getElementById("jielun1").value = json.earScanJielun.jielun; /* 下半截部分组合表动态展示修改和添加 */ var arrESC = eval(json.listEarScanCp);// arrESC是一个数组频扫结论组合表 var str = ""; var str1 = ""; for (var i = 0; i < arrESC.length; i++) { str += "<tr>"; str += "<td colspan=\"8\">"; str += "<div style=\"margin-left: 148px;\" id=\"earScanCp\">"; str += "<div style=\"float: left;\">"; str += "<textarea style=\"width: 50px;margin-left: -86px;position: absolute;\" id=\"cp_id\" name=\"cp_id\" >" + arrESC[i].id + "</textarea>"; str += "<select style=\"width: 60px;height: 36px;margin-left: 20px;\" id=\"gender\" name=\"gender\" >" var myselect = document.getElementById("gender");// 这个获取的是静态jsp页面里标签 /* * 下拉框主要是应展示项和所有下拉选项的值判断是否对应 分清主和客 * 所有展示项目为主表客表的某一项值和遍历主表的值对应 这里面 下拉框所有选项值是主表 */ var str1 = ""; for (var j = 0; j < myselect.options.length; j++) {// 下拉框是主家从静态页面获取并且遍历它 // alert("j值:" + myselect.options[j].value); str += "<option value=\"" + myselect.options[j].value + "\" " + (myselect.options[j].value == arrESC[i].gender ? "selected='selected'" : "") + ">" + myselect.options[j].text + "</option>"; } "</select>"; str += "<textarea style=\"width: 50px;margin-left: 10px;\" id=\"min_age\" name=\"min_age\" >" + arrESC[i].min_age + "</textarea>"; str += "<textarea style=\"width: 50px;margin-left: 10px;\" id=\"max_age\" name=\"max_age\" >" + arrESC[i].max_age + "</textarea>"; // str += "<textarea style=\"width: // 300px;margin-left:10px;\" id=\"xuewei_id\" // name=\"xuewei_id\" >" // + arrESC[i].xuewei_id + "</textarea>"; // str +="<div id=\"selectSection\">"; /* * id=\"xuewei_id\" */ str += "<textarea style=\"width:300px;margin-left:10px;display:none;\" id=\"xuewei_id1\" name=\"xuewei_id1\" >" + arrESC[i].xuewei_id + "</textarea>"; // str += "<div id=\"selectSection\" name=\"selectSection\">"; str += "<select style=\"width: 300px;margin-left:10px;\" name=\"xuewei_id\"class=\"combox\" multiple >" str += "<optgroup label=\"小辈儿组\">"; str += "<option value=\"1\" " + "selected='selected'" + ">心</option>"; str += "<option value=\"2\" " + "selected='selected'" + ">" + "肺" + "</option>"; str += "<option value=\"3\" " + "selected='selected'" + ">" + "小肠" + "</option>"; str += "<option value=\"4\">" + "口" + "</option>"; str += "<option value=\"5\">" + "食道" + "</option>"; str += "</optgroup>"; // str += "</div>"; /* 进一步转换频扫组合表穴位id字符串转array数组 */ /* * var strXueweiId = arrESC[i].xuewei_id; var * arrayXueweiId = strXueweiId.split(","); * * for (var j = 0; j < arrayXueweiId.length; j++) { str2 += "<option * value=\"" + arrayXueweiId[j].value + "\">" + * arrayXueweiId[j].value + "</option>"; var checkESJ2 = * arrayXueweiId[j].name; if (arrayXueweiId[j] == 5) { * arrayXueweiId[j] = "selected='selected'"; } * $("#jibing_num1").html(str2); } */ "</select>"; // // $("#xuewei_id").val("1,2,3").select2(); str += "<textarea style=\"width: 220px;margin-left: 10px;\" id=\"chuzhen_id\" name=\"chuzhen_id\" >" + arrESC[i].chuzhen_id + "</textarea>"; str += "<select style=\"width: 60px;height: 36px;margin-left: 10px;\" id=\"bp\" name=\"bp\" >" var myselect1 = document.getElementById("bp");// 这个获取的是静态jsp页面里标签 for (var k = 0; k < myselect1.options.length; k++) {// 下拉框是主家从静态页面获取并且遍历它 // alert("j值:" + myselect1.options[k].value); str += "<option value=\"" + myselect1.options[k].value + "\" " + (myselect1.options[k].value == arrESC[i].bp ? "selected='selected'" : "") + ">" + myselect1.options[k].text + "</option>"; } "</select>"; str += "<textarea style=\"width: 50px; height: 36px;margin-left: 10px;margin-top: 0px;\" id=\"jielun_conform\" name=\"jielun_conform\">" + arrESC[i].jielun_conform + "</textarea>"; str += "</div>"; str += "<div >"; str += " <input type=\"button\" onclick=\"delRow(this," + arrESC[i].id + "," + arrESC[i].bianzhengId + ")\" value=\"删除\" id=\"deleteESC\" name=\"deleteESC\" style=\"float: left; margin-left:10px; margin-top: 5px;\">"; str += "</div>"; str += "</div>"; str += "</td>"; str += "</tr>"; /* 替换静态页面 */ $("#tbody1").html(str); select2Execute(); } } }); } ``` 执行select2方法 ``` /* 执行select2方法 */ function select2Execute() { $(function() { $("select[name='xuewei_id']").select2({ // $('select[id="xuewei_id"]').select2({ // $('#xuewei_id').select2({ // $("#selectSection").find("select.combox").select2({ // $(".select2-selection__choice").select2(); // $(".combox").select2({ placeholder : "请至少选择一个人名", tags : true, createTag : function(decorated, params) { return null; }, width : '256px' }); function formatState(state) { if (!state.id) { return state.text; } var $state = $('<span>' + state.text + '</span>'); return $state; } ; $('#sel_recommender').select2({ placeholder : "请选择一个人名", templateResult : formatState, width : '256px' }); alert($("select[name='xuewei_id']").select2('data')[0].text); // $("#selectSection").find("select.xuewei_id").val(); // document.getElementById("selectSection").value=$("select[name='xuewei_id']").select2('data'); $("#xuewei_id1").val( $("select[name='xuewei_id']").select2('data'));//赋值给textarea隐藏的标签 alert($("#xuewei_id1").val()); }); } ```
请教,javascript的拖动div代码
[size=small]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这个是51job上的实例:[url]http://www.51job.com/default-area.php?area=0100[/url] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当点选"选择/修改"时,会弹出对话框来让你选择,这个对话框是可以拖动的,现在我有个类似的代码来实现拖动: [code="java"] var oDrag = ""; var ox,oy,nx,ny,dy,dx; function drag(e,o){ var e = e ? e : event; var mouseD = document.all ? 1 : 0; if(e.button == mouseD){ oDrag = o.parentNode; //alert(oDrag.id); ox = e.clientX; oy = e.clientY; } } document.onmouseup = function(){oDrag = "";} document.onmousemove = function(event){dragPro(event);} function dragPro(e){ if(oDrag != ""){ var e = e ? e : event; //$(oDrag).style.left = $(oDrag).offsetLeft + "px"; //$(oDrag).style.top = $(oDrag).offsetTop + "px"; dx = parseInt($(oDrag).style.left); dy = parseInt($(oDrag).style.top); //dx = $(oDrag).offsetLeft; //dy = $(oDrag).offsetTop; nx = e.clientX; ny = e.clientY; $(oDrag).style.left = (dx + ( nx - ox )) + "px"; $(oDrag).style.top = (dy + ( ny - oy )) + "px"; ox = nx; oy = ny; } }[/code] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;但是我看不懂,希望会的朋友,给我解释下,最好给我加上详细的注释. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;下面是页面调用的div: [code="java"]<div onmousedown="drag(event,this)">[/code] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;谢啦! [/size] [b]问题补充:[/b] 老报错吗?我没有把全部代码贴出来: <code><html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>仿51job.com城市选择框特效</title> <style type="text/css"> <!-- body{padding-top:50px;font-size:12px;} h2{margin:0px;padding:0px;font-size:12px;font-weight:bold;} .bton{border:1px solid #CCC;background:#DDD;} .cont{padding:10px;} #main{width:400px;margin:0px auto;} #selectItem{background:#FFF;position:absolute;top:0px;left:center;border:1px solid #000;overflow:hidden;margin-top:10px;width:400px;z-index:2;} #preview{margin:1px;border:1px solid #CCC;} #result{border:1px solid #CCC;margin-top:10px;} .tit{line-height:20px;height:20px;margin:1px;padding-left:10px;} .bgc_ccc{background:#CCC;} .bgc_eee{background:#eee;} .c_999{color:#999} .pointer{cursor:pointer;} .left{float:left;} .right{float:right;} .cls{clear:both;font-size:0px;height:0px;overflow:hidden;} #bg{background:#CCC;filter:alpha(opacity=70);opacity:0.7;width:100%;;position:absolute;left:0px;top:0px;display:none;z-index:1;} .hidden{display:none;} .move{cursor:move;} --> </style> </head> <body> <div id="main"> <input name="button" type="button" class="bton pointer" value="请选择" onclick="openBg(1);openSelect(1)" /> <div id="result"> <div class="tit bgc_eee"> <h2>您已选择的城市汇总</h2> </div> <div class="cont" id="makeSureItem"></div> </div> </div> <div id="bg"></div> <div id="selectItem" class="hidden"> <div class="tit bgc_ccc move" onmousedown="drag(event,this)"> <h2 class="left">请选择城市</h2> <span class="pointer right" onclick="openBg(0);openSelect(0);">[取消]</span> <span class="pointer right" onclick="makeSure();">[确定]</span> </div> <div class="cls"></div> <div class="cont"> <div id="selectSub"> <select name="" onchange="showSelect(this.value)" style="margin-bottom:10px;"> <option value="0">第0层</option> <option value="1">第1层</option> <option value="2">第2层</option> <option value="3">第3层</option> </select> <div id="c00"> <input type="checkbox" name="ck00" onclick="addPreItem()" value="北京" />北京 <input type="checkbox" name="ck00" onclick="addPreItem()" value="福建" />福建 <input type="checkbox" name="ck00" onclick="addPreItem()" value="四川" />四川 <input type="checkbox" name="ck00" onclick="addPreItem()" value="江苏" />江苏 </div> <div id="c01"> <input type="checkbox" name="ck01" onclick="addPreItem()" value="上海" />上海 <input type="checkbox" name="ck01" onclick="addPreItem()" value="云南" />云南 <input type="checkbox" name="ck01" onclick="addPreItem()" value="贵州" />贵州 </div> <div id="c02"> <input type="checkbox" name="ck01" onclick="addPreItem()" value="黑龙江" />黑龙江 <input type="checkbox" name="ck01" onclick="addPreItem()" value="吉林" />吉林 <input type="checkbox" name="ck01" onclick="addPreItem()" value="辽宁" />辽宁 </div> <div id="c03"> <input type="checkbox" name="ck01" onclick="addPreItem()" value="美国" />美国 <input type="checkbox" name="ck01" onclick="addPreItem()" value="阿富汗" />阿富汗 <input type="checkbox" name="ck01" onclick="addPreItem()" value="日本" />日本 </div> </div> </div> <div id="preview"> <div class="tit bgc_eee c_999"> <h2>您已选择的城市</h2> </div> <div class="cont" id="previewItem"></div> </div> </div> <script type="text/javascript"> /* ------使用说明----- */ /* 添加城市方法: 添加组:找到id 是 "selectSub"中select标签下,添加option标签 value属性递增,找到 id 是 "selectSub",按照原有格式添加div,其id属性递增 添加二级傅选矿选项 复制 id 是 "selectSub" 下任意input标签,粘贴在需要添加的位置。 */ var grow = $("selectSub").getElementsByTagName("option").length; //组数 var showGrow = 0;//已打开组 var selectCount = 0; //已选数量 showSelect(showGrow); var items = $("selectSub").getElementsByTagName("input"); //alert(maxItem); //var lenMax = 2; //alert(1); function $(o){ //获取对象 if(typeof(o) == "string") return document.getElementById(o); return o; } function openBg(state){ //遮照打开关闭控制 if(state == 1){ document.getElementById("bg").style.display = "block"; var h = document.body.offsetHeight > document.documentElement.offsetHeight ? document.body.offsetHeight : document.documentElement.offsetHeight; //alert(document.body.offsetHeight); //alert(document.documentElement.offsetHeight); document.getElementById("bg").style.height = h + "px"; } else{ document.getElementById("bg").style.display = "none"; } } function openSelect(state){ //选择城市层关闭打开控制 if(state == 1){ $("selectItem").style.display = "block"; $("selectItem").style.left = ($("bg").offsetWidth - $("selectItem").offsetWidth)/2 + "px"; $("selectItem").style.top = document.body.scrollTop + 100 + "px"; } else{ $("selectItem").style.display = "none"; } } function showSelect(id){ for(var i = 0 ; i < grow ;i++){ $("c0" + i).style.display = "none"; } $("c0" + id).style.display = "block"; showGrow = id; } function open(id,state){ //显示隐藏控制 if(state == 1) $(id).style.display = "block"; $(id).style.diaplay = "none"; } function addPreItem(){ $("previewItem").innerHTML = ""; var len = 0 ; for(var i = 0 ; i < items.length ; i++){ if(items[i].checked == true){ //len++; //if(len > lenMax) //{ // alert("不能超过" + lenMax +"个选项!") // return false; //} var mes = "<input type='checkbox' checked='true' value='"+ items[i].value +"' onclick='copyItem(\"previewItem\",\"previewItem\");same(this);'>" + items[i].value; $("previewItem").innerHTML += mes; //alert(items[i].value); } } } function makeSure(){ //alert(1); //$("makeSureItem").innerHTML = $("previewItem").innerHTML; openBg(0); openSelect(0); copyItem("previewItem","makeSureItem") } function copyHTML(id1,id2){ $(id2).innerHTML = $("id1").innerHTML; } function copyItem(id1,id2){ var mes = ""; var items2 = $(id1).getElementsByTagName("input"); for(var i = 0 ; i < items2.length ; i++){ if(items2[i].checked == true){ mes += "<input type='checkbox' checked='true' value='"+ items2[i].value +"' onclick='copyItem(\"" + id2+ "\",\""+ id1 +"\");same(this);'>" + items2[i].value; } } $(id2).innerHTML = ""; $(id2).innerHTML += mes; //alert($(id2).innerHTML); } function same(ck){ for(var i = 0 ; i < items.length ; i++){ if(ck.value == items[i].value){ items[i].checked = ck.checked; } } } /* 鼠标拖动 */ var oDrag = ""; var ox,oy,nx,ny,dy,dx; function drag(e,o){ var e = e ? e : event; var mouseD = document.all ? 1 : 0; if(e.button == mouseD){ oDrag = o.parentNode; //alert(oDrag.id); ox = e.clientX; oy = e.clientY; } } document.onmouseup = function(){oDrag = "";} document.onmousemove = function(event){dragPro(event);} function dragPro(e){ if(oDrag != ""){ var e = e ? e : event; //$(oDrag).style.left = $(oDrag).offsetLeft + "px"; //$(oDrag).style.top = $(oDrag).offsetTop + "px"; dx = parseInt($(oDrag).style.left); dy = parseInt($(oDrag).style.top); //dx = $(oDrag).offsetLeft; //dy = $(oDrag).offsetTop; nx = e.clientX; ny = e.clientY; $(oDrag).style.left = (dx + ( nx - ox )) + "px"; $(oDrag).style.top = (dy + ( ny - oy )) + "px"; ox = nx; oy = ny; } } </script> </body> </html></code>
Ie控制台报错--无法获取未定义或 null 引用的属性“mr_changed”
这段代码比较长,就是js实现动态表格添加数据,通过onblur事件实现只在修改的数据前面加上标记“1”,然后后台通过标记有选择的更新数据。但是有两个问题 1.自带数据修改onblur事件不触发 2.只有点击新增表格,新增修改表格数据,onblur才触发,但是触发后控制台报错 ----无法获取未定义或 null 引用的属性“mr_changed”。 初学者,大家帮帮忙啊 ![图片说明](https://img-ask.csdn.net/upload/201706/07/1496830756_844032.png) ``` <%@ page language="java" pageEncoding="UTF-8"%> <%@ include file="../../base.jsp"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript" src="${ctx}/components/jquery-ui/jquery-1.2.6.js"></script> <script type="text/javascript" src="${ctx}/js/tabledo.js"></script> <script type="text/javascript" src="${ctx}/js/datepicker/WdatePicker.js"></script> <script type="text/javascript"> $().ready(function(){ ${mRecordData} }); /* 实现表格序号列自动调整 created by tony 20081219 */ function sortnoTR(){ sortno('mRecordTable', 2, 1); } function setTRUpdateFlag(obj){ //alert(obj.type); //alert(obj.defaultValue); //var mr_changed = obj.getElementById("mr_changed"); var currTr = obj.parentElement.parentElement; if(currTr.innerHTML.toLowerCase().indexOf("<span")==0){ currTr = obj.parentElement.parentElement.parentElement; } //alert(currTr.innerHTML); if(obj.value!=obj.defaultValue){ //当填写的框内容发生变化时,设置本行记录发生变化标识 currTr.cells[1].all.mr_changed.value = "1"; //document.getElementById("mr_changed").value="1"; } //alert(mr_changed.value); } function addTRRecord(objId, id, productNo, cnumber, grossWeight, netWeight, sizeLength, sizeWidth, sizeHeight, exPrice, tax) { var _tmpSelect = ""; var tableObj = document.getElementById(objId); //得到表格对象 var rowLength = tableObj.rows.length; //行数 oTR = tableObj.insertRow(); //在行尾插入行 oTD = oTR.insertCell(0); //插入一个单元格 oTD.style.whiteSpace="nowrap"; //规定段落不换行 oTD.ondragover = function(){this.className="drag_over" }; //动态加事件, 改变样式类 oTD.ondragleave = function(){this.className="drag_leave" }; oTD.onmousedown = function(){ clearTRstyle("result"); this.parentNode.style.background = '#0099cc';}; //this.style.background="#0099cc url(../images/arroww.gif) 4px 9px no-repeat"; oTD.innerHTML = "&nbsp;&nbsp;"; oTD = oTR.insertCell(1); oTD.innerHTML = "<input class=\"input\" type=\"checkbox\" name=\"del\" value=\""+id+"\"><input type=\"text\" name=\"mr_id\" value=\""+id+"\"><input class=\"input\" type=\"text\" id=\"mr_changed\" value=\"\" name=\"mr_changed\">"; oTD = oTR.insertCell(2); oTD.innerHTML = "<input class=\"input\" type=\"text\" name=\"mr_orderNo\" readonly size=\"3\" value=\"\">"; oTD = oTR.insertCell(3); oTD.innerHTML = "<b><font face='微软雅黑'><font color='blue'>"+productNo;+"</font></font></b> " oTD = oTR.insertCell(4); oTD.innerHTML = "<input type=\"text\" name=\"mr_cnumber\" maxLength=\"10\" value=\""+cnumber+"\" onblur=\"setTRUpdateFlag(this);\" size=\"15\">"; oTD = oTR.insertCell(5); oTD.innerHTML = "<input type=\"text\" name=\"mr_grossWeight\" maxLength=\"10\" value=\""+grossWeight+"\" onblur=\"setTRUpdateFlag(this);\" size=\"15\">"; oTD = oTR.insertCell(6); oTD.innerHTML = "<input type=\"text\" name=\"mr_netWeight\" maxLength=\"10\" value=\""+netWeight+"\" onblur=\"setTRUpdateFlag(this);\" size=\"15\">"; oTD = oTR.insertCell(7); oTD.innerHTML = "<input type=\"text\" name=\"mr_sizeLength\" maxLength=\"10\" value=\""+sizeLength+"\" onblur=\"setTRUpdateFlag(this);\" size=\"15\">"; oTD = oTR.insertCell(8); oTD.innerHTML = "<input type=\"text\" name=\"mr_sizeWidth\" maxLength=\"10\" value=\""+sizeWidth+"\" onblur=\"setTRUpdateFlag(this);\" size=\"15\">"; oTD = oTR.insertCell(9); oTD.innerHTML = "<input type=\"text\" name=\"mr_sizeHeight\" maxLength=\"10\" value=\""+sizeHeight+"\" onblur=\"setTRUpdateFlag(this);\" size=\"15\">"; oTD = oTR.insertCell(10); oTD.innerHTML = "<input type=\"text\" name=\"mr_exPrice\" maxLength=\"10\" value=\""+exPrice+"\" onblur=\"setTRUpdateFlag(this);\" size=\"15\">"; oTD = oTR.insertCell(11); oTD.innerHTML = "<input type=\"text\" name=\"mr_tax\" maxLength=\"10\" value=\""+tax+"\" onblur=\"setTRUpdateFlag(this);\" size=\"15\">"; dragtableinit(); //拖动表格行 sortnoTR(); //排序号 //setTRUpdateFlag(); //设置本行记录发生变化标识 } </script> </head> <body> <form method="post"> <input type="hidden" name="id" value="${obj.id}"/> <div id="menubar"> <div id="middleMenubar"> <div id="innerMenubar"> <div id="navMenubar"> <ul> <li id="save"><a href="#" onclick="formSubmit('update.action','_self');">确定</a></li> <li id="back"><a href="list.action">返回</a></li> </ul> </div> </div> </div> </div> <div class="textbox" id="centerTextbox"> <div class="textbox-header"> <div class="textbox-inner-header"> <div class="textbox-title"> 修改出口报运 </div> </div> </div> <div> <div> <table class="commonTable" cellspacing="1"> <tr> <td class="columnTitle_mustbe">客户号:</td> <td class="tableContent"><input type="text" name="customerContract" value="${obj.customerContract}"/></td> <td class="columnTitle_mustbe">制单日期:</td> <td class="tableContent"> <input type="text" name="inputDate" style="width:90px;" value="<fmt:formatDate value="${obj.inputDate}" pattern="yyyy-MM-dd"/>" onclick="WdatePicker({el:this,isShowOthers:true,dateFmt:'yyyy-MM-dd'});" readonly/> </td> </tr> <tr> <td class="columnTitle_mustbe">收货人及地址:</td> <td class="tableContent"><input type="text" name="consignee" value="${obj.consignee}"/></td> <td class="columnTitle_mustbe">L/C No.:</td> <td class="tableContentAuto"> <input type="radio" name="lcno" value="T/T" class="input" <c:if test="${obj.lcno=='T/T'}">checked</c:if>>T/T <input type="radio" name="lcno" value="L/C" class="input" <c:if test="${obj.lcno=='L/C'}">checked</c:if>>L/C </td> </tr> <tr> <td class="columnTitle_mustbe">装运港:</td> <td class="tableContent"><input type="text" name="shipmentPort" value="${obj.shipmentPort}"/></td> <td class="columnTitle_mustbe">运输方式:</td> <td class="tableContentAuto"> <input type="radio" name="transportMode" value="SEA" class="input" <c:if test="${obj.transportMode=='SEA'}">checked</c:if>>海运(SEA) <input type="radio" name="transportMode" value="AIR" class="input" <c:if test="${obj.transportMode=='AIR'}">checked</c:if>>空运(AIR) </td> <tr> <td class="columnTitle_mustbe">价格条件:</td> <td class="tableContent"><input type="text" name="priceCondition" value="${obj.priceCondition}"/></td> </tr> <tr> <td class="columnTitle_mustbe">唛头:</td> <td class="tableContent"><textarea name="marks" style="height:130px;">${obj.marks}</textarea></td> <td class="columnTitle_mustbe">说明:</td> <td class="tableContent"><textarea name="remark" style="height:130px;">${obj.remark}</textarea></td> </tr> </table> </div> </div> <div class="textbox" id="centerTextbox"> <div class="textbox-header"> <div class="textbox-inner-header"> <div class="textbox-title"> 报运下货物的列表信息 </div> </div> </div> <div> <div class="listTablew"> <table class="commonTable_main" cellSpacing="1" id="mRecordTable"> <tr class="rowTitle" align="middle"> <td width="25" title="可以拖动下面行首,实现记录的位置移动."> <img src="../../images/drag.gif"> </td> <td width="20"> <input class="input" type="checkbox" name="ck_del" onclick="checkGroupBox(this);" /> </td> <td width="33">序号</td> <td>货号</td> <td>数量</td> <td>毛重</td> <td>净重</td> <td>长</td> <td>宽</td> <td>高</td> <td>出口单价</td> <td>含税</td> </tr> </table> </div> <div style="padding:10px;"> <input type="button" name="btnAdd" value="新增" onclick="addTRRecord('mRecordTable', '', '', '', '', '', '', '', '', '', '');"/> </div> </div> <div class="textbox-bottom"> <div class="textbox-inner-bottom"> <div class="textbox-go-top"> </div> </div> </div> </div> </form> </body> </html> ```
struts 2 VO取不到值
现在做一个项目用Struts2 hibernate spring 开发遇到一个问题 前台Jsp页面都使用的Struts2 标签 标签里用VO传值如 <s:textfiled name=userVo.userName lable="用户名"/> 问题是 表单提交以后action里获得不了VO的值 得到的null 有没有谁遇到过这样的情况帮忙解决一下 谢谢 [b]问题补充:[/b] 1、action中包含了userVo的getter和setter 2、UserVo中包含全部属性的构造方法还有相应的get set 方法 [b]问题补充:[/b] 开始做时是好用的 这几天突然整个项目的VO都不起作用了 添加和修改都失去作用 VO都是null 检查了配置文件也没有多余的配置项 最近也没添加多余的配置 [b]问题补充:[/b] 这是 取几个简单的属性的jsp页面 <s:form action="sqm/checklist/addCheckList" method="post"> <table cellspacing="0" cellpadding="0"> <tr> <th>供应商姓名:</th> <td><s:textfield id="supplierName" name="checVO.supplierName" size="21"/> </td> <th>到货日期:</th> <td><input id="getbaleDate" name="checVO.getbaleDate" size="21"></td> </tr> <tr> <th>报检日期:</th> <td><s:textfield id="inspecDate" name="checVO.inspecDate" size="21"/></td> <th>报检人:</th> <td><s:textfield id="inspecPerson" name="checVO.inspecPerson" size="21"/></td> </tr> <tr> <th>物料代码:</th> <td> <s:textfield id="materialCode" name="checVO.materialCode" size="21"/></td> <th>物料名称:</th> <td><s:textfield id="materialName" name="checVO.materialName" size="21"/></td> </tr> <tr> <th>单位:</th> <td><s:textfield id="unit" name="checVO.unit" size="21"/> </td> <th>数量:</th> <td><s:textfield id="amount" name="checVO.amount" size="21"/></td> </tr> </table> <input type="button" value="保存" class="operBtn" onclick="doSubmit(1)">// 提交到js做判断再提交 <input type="button" value="返回" class="operBtn" onclick="javascript:history.back()"> </s:form> </body> </html> 这是action public class CheckListAction extends ActionSuppert { private CheckListService checkListService;//相应的get set private CheckListVO checVO;//相应的get set //增加检验单 public String addCheckList(){ 调用service层的 save方法 this.checkListService.addCheckList(checVO); return "addCheckList"; } } } } } [b]问题补充:[/b] 用debug 调试VO是null
关于中文乱码的问题,快奔溃了,各种拦截器各种办法使用上,没有任何效果。。。求大神指点。。
![图片说明](https://img-ask.csdn.net/upload/201711/19/1511076487_133697.png) ![图片说明](https://img-ask.csdn.net/upload/201711/19/1511076495_804011.png) ![图片说明](https://img-ask.csdn.net/upload/201711/19/1511076504_229231.png) ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!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> <base href="<%=basePath%>"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>欢迎登录后台管理系统</title> <link href="css/style.css" rel="stylesheet" type="text/css" /> <script language="JavaScript" src="js/jquery.js"></script> <script src="js/cloud.js" type="text/javascript"></script> <script language="javascript"> $(function(){ $('.loginbox').css({'position':'absolute','left':($(window).width()-692)/2}); $(window).resize(function(){ $('.loginbox').css({'position':'absolute','left':($(window).width()-692)/2}); }) }); </script> <script> //读取验证码 function readcode(){ //获取img中的属性 var imgEle = $("#imgEle"); //改变img的属性值 var now = new Date().getTime(); //不同的时间点获取的是不同的图片 imgEle.attr("src","rc.action?hello="+now); } //验证文本框中的内容 function checkcode(){ //获取文本框中的内容 var code = $("#code").val(); //进行向后台的一个传递 var data = {operation:'checkcode',code:code}; $.get("user.action",data,function(result){ if(result=="yes"){ $("#loginFrim").submit(); }else if(result=="no"){ $("#tipinfo").fadeIn(200); $("#loginFrim").reset(); } }); } //试验弹出框 function checkName(){ var uname = $("#uname").val(); if(uname == "123"){ $("#tipinfo").fadeIn(200); } } //弹出框设置的属性 $(document).ready(function(){ $(".click").click(function(){ $(".tip").fadeIn(200); }); $(".tiptop a").click(function(){ $(".tip").fadeOut(200); }); $(".sure").click(function(){ $(".tip").fadeOut(100); }); $(".cancel").click(function(){ $(".tip").fadeOut(100); }); }); </script> </head> <body style="background-color:#df7611; background-image:url(images/light.png); background-repeat:no-repeat; background-position:center top; overflow:hidden;"> <div id="mainBody"> <div id="cloud1" class="cloud"></div> <div id="cloud2" class="cloud"></div> </div> <div class="logintop"> <span>欢迎登录后台管理界面平台</span> <ul> <li><a href="#">回首页</a></li> <li><a href="#">帮助</a></li> <li><a href="#">关于</a></li> </ul> </div> <div class="loginbody"> <span class="systemlogo"></span> <div class="loginbox loginbox1"> <form action="user.action" method="post" id="loginFrim"> <input type="hidden" name="operation" value="login"/> <ul> <li><input name="username" type="text" id="uname" onblur="checkName();" class="loginuser" placeholder="请输入用户名" autocomplete="off"/></li> <li><input name="userpwd" type="password" class="loginpwd" placeholder="请输入密码"/></li> <li class="yzm"> <span><input id="code" onblur="checkcode();" type="text" value="验证码" onclick="JavaScript:this.value=''"/></span><cite><img id="imgEle" width="112px" height="45px" src="rc.action" onclick="readcode();"></cite> </li> <li><input type="button" onclick="checkcode();" class="loginbtn" value="登录"/><label><input name="" type="checkbox" value="" checked="checked" />记住密码</label><label><a href="#">忘记密码?</a></label></li> </ul> </form> </div> </div> <!-- 弹出框的信息 --> <div class="tip" id="tipinfo"> <div class="tiptop"><span>提示信息</span><a></a></div> <div class="tipinfo"> <span><img src="images/ticon.png" /></span> <div class="tipright"> <p>请重新输入验证码</p> <cite>如果是请点击确定按钮 ,否则请点取消。</cite> </div> </div> <div class="tipbtn"> <input name="" type="button" class="sure" value="确定" />&nbsp; <input name="" type="button" class="cancel" value="取消" /> </div> </div> <div class="loginbm">版权所有 2014 <a href="http://www.uimaker.com">uimaker.com</a> 仅供学习交流,勿用于任何商业用途</div> </body> </html> ``` 建立了三条防线,前端接收参数的时候设置utf-8,还有自己的拦截器拦截中文乱码的问题,但是各种效果各种试,没有什么用,登陆的时候英文名字能上去,一换成中文就上不去了,就显示乱码了。。。添加用户也是这问题,名字就成乱码了。。。求大神帮忙。。。
Java WEB 连接数据库的登录界面失败?
使用Eclipse做登陆界面,连接MySQL 8.0,测试过连接数据库应该是成功的,可能是struts配置有问题,新手不知道问题出在哪里,请帮忙看一下代码,我标注几个我可能出问题又不知道怎么改的地方 //login.jsp //此处可能是表单中form的action属性有问题? ``` <%@ page contentType="text/html; charset=gb2312" language="java"%> <html> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <head> <title>图书馆管理系统</title> <link href="CSS/style.css" rel="stylesheet"> <script language="javascript"> function check(form){ if (form.name.value==""){ alert("请输入用户名称");form.name.focus();return false; } if (form.pwd.value==""){ alert("请输入密码");form.pwd.focus();return false; } } </script> </head> <body> <table width="1000" border="0" align="center" cellpadding="0" cellspacing="0" class="tableBorder"> <tr> <td width="1000" height="545" align="center" background="Images/login.png"> <table width="1000" height="345" aligh="center" ></table> <form name="form1" method="post" action="manager.do?action=login"> <table width="400" height="200" align="left"> <tr> <td height="37" style="width: 128px; "></td> <td height="37" width="50"> 用户名</td> <td height="37" width="150"> <input name="name" type="text" class="logininput" id="name" size="27"> </td> </tr> <tr> <td height="37" style="width: 128px; "></td> <td height="37" width="50"> 密码 </td> <td height="37" width="150"> <input name="pwd" type="text" class="logininput" id="pwd" size="27"> </td> </tr> <tr> <td height="37" style="width: 128px; "></td> <td height="37" width="50"></td> <td height="37" width="200"> <input name="Submit" type="submit" class="btn_grey" value="确定" onClick="return check(form1)"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input name="Submit3" type="reset" class="btn_grey" value="重置"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input name="Submit2" type="button" class="btn_grey" value="关闭" onClick="window.close();"> </td> </tr> </table> </form> </td> <tr> <td align="center" height="50" bgcolor="#3A3A3A" class="word_login">CopyRight &copy; 2019版权所有 xx图书馆<br> </td> </tr> </table> </body> </html> ``` //Manager.java ``` package com.action; import org.apache.struts.action.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.actionForm.ManagerForm; import com.dao.ManagerDAO; import javax.servlet.http.HttpSession; public class Manager extends Action { private ManagerDAO managerDAO = null; public Manager() { this.managerDAO = new ManagerDAO(); } public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { String action = request.getParameter("action"); // System.out.println("获取的查询字符串:" + action); if (action == null || "".equals(action)) { return mapping.findForward("error"); } else if ("login".equals(action)) { return managerLogin(mapping, form, request, response); } request.setAttribute("error", "操作失败!"); return mapping.findForward("error"); } // 管理员身份验证 public ActionForward managerLogin(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { ManagerForm managerForm = (ManagerForm) form; //将接收到的表单信息强制转换成ActionForm类型 managerForm.setAd_name(managerForm.getAd_name()); managerForm.setAd_pwd(managerForm.getAd_pwd()); int ret = managerDAO.checkManager(managerForm); System.out.print("验证结果ret的值:" + ret); if (ret == 1) { //将登录到系统的管理员名称保存到session HttpSession session = request.getSession(); session.setAttribute("manager", managerForm.getAd_name()); return mapping.findForward("managerLoginok"); } else { request.setAttribute("error", "您输入的管理员名称或密码错误!"); return mapping.findForward("error"); } } } ``` //ManagerForm ``` package com.actionForm; import org.apache.struts.action.ActionForm; public class ManagerForm extends ActionForm { private int ad_id; private String ad_name; private String ad_pwd; public ManagerForm() { } public int getAd_id() { return ad_id; } public void setAd_id(int ad_id) { this.ad_id=ad_id; } public String getAd_name() { return ad_name; } public void setAd_name(String ad_name) { this.ad_name=ad_name; } public String getAd_pwd() { return ad_pwd; } public void setAd_pwd(String ad_pwd) { this.ad_pwd=ad_pwd; } } ``` //ManagerDAO ``` package com.dao; import com.core.ChStr; import com.core.ConnDB; import java.util.*; import com.actionForm.ManagerForm; import java.sql.*; public class ManagerDAO { private ConnDB conn = new ConnDB(); //管理员身份验证 public int checkManager(ManagerForm managerForm) { int flag = 0; ChStr chStr=new ChStr(); String sql = "SELECT * FROM Ad_info where ad_name='" + chStr.filterStr(managerForm.getAd_name()) + "'"; ResultSet rs = conn.executeQuery(sql); try { if (rs.next()) { String pwd = chStr.filterStr(managerForm.getAd_pwd()); //获取输入的密码并过滤输入字符串中的危险字符 if (pwd.equals(rs.getString(3))) { flag = 1; } else { flag = 0; } }else{ flag = 0; } } catch (SQLException ex) { flag = 0; }finally{ conn.close(); } return flag; } } ``` //ConnDB ``` package com.core; import java.io.InputStream; import java.sql.*; import java.util.Properties; public class ConnDB { public Connection conn=null; public Statement stmt=null; public ResultSet rs=null; private static String propFileName="/com/connDB.properties"; private static Properties prop=new Properties(); private static String dbClassName="com.mysql.cj.jdbc.Driver"; private static String dbUrl="jdbc:mysql://223.80.110.29:3306/sys_test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL"; private static String dbUserName="root"; private static String dbPassword=""; //加载资源文件 public ConnDB() { try { InputStream in=getClass().getResourceAsStream(propFileName); prop.load(in); dbClassName=prop.getProperty("DB_CLASS_NAME","com.mysql.cj.jdbc.Driver"); dbUrl=prop.getProperty("DB_URL","jdbc:mysql://localhost:3306/db_librarysys?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL"); dbUserName=prop.getProperty("DB_USERNAME"); dbPassword=prop.getProperty("DB_PASSWORD"); } catch(Exception e){ e.printStackTrace(); } } public static Connection getConnection() { Connection conn=null; try { //加载数据库驱动 Class.forName(dbClassName); conn=DriverManager.getConnection(dbUrl,dbUserName,dbPassword); } catch(Exception ee) { ee.printStackTrace(); } if(conn==null) { System.err.println("警告:DbConnectionManager.getConnection()获得数据库链接失败.\r\n\r\n链接类型:"+dbClassName+"\r\n链接位置:"+dbUrl); } return conn; } //执行查询语句 public ResultSet executeQuery(String sql) { try { conn=getConnection(); stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); /*ResultSet.CONCUR_READ_ONLY 不能用结果集更新数据库中的表 ResultSet.TYPE_SCROLL_INSENSITIVE 结果集的游标可以上下移动,当数据库变化时,当前结果集不变。 */ rs=stmt.executeQuery(sql); } catch(SQLException ex){ System.err.println(ex.getMessage()); } return rs; } //执行更新操作 添加修改删除数据 public int executeUpdate(String sql) { int result=0;//更新的行数 try { conn=getConnection(); stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); result=stmt.executeUpdate(sql); }catch(SQLException ex) { result=0; } return result; } public void close() { try { if(rs!=null) { rs.close(); } if(stmt!=null) { stmt.close(); } if(conn!=null) { conn.close(); } }catch(Exception e) { e.printStackTrace(System.err); } } } ``` //struts-config ``` <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config> <form-beans> <form-bean name="managerForm" type="com.actionForm.ManagerForm" /> <form-bean name="ParameterForm" type="com.actionForm.ParameterForm" /> </form-beans> <action-mappings type="org.apache.struts.action.ActionMapping"> <action name="managerForm" path="/manager" scope="request" type="com.action.Manager" validate="true"> <forward name="managerLoginok" path="/main.jsp" /> <forward name="error" path="/error.jsp" /> </action> <action name="ParameterForm" path="/parameter" scope="request" type="com.action.Parameter" validate="true"> <forward name="error" path="/error.jsp" /> <forward name="parametermodify" path="/parameter_ok.jsp?para=2" /> <forward name="parametermodifyQuery" path="/parameter_modify.jsp" /> </action> </action-mappings> <message-resources parameter="com.wgh.struts.ApplicationResources" /> </struts-config> ```
求这道题目代码 我只能做这种弹出提示框的 不能把分数和相应错题答案连接到新窗口
![图片说明](https://img-ask.csdn.net/upload/201512/28/1451262890_646273.png) ``` <!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> <title>测试</title> <SCRIPT language="JavaScript"> function show() { var str = ""; str = str + panduan("score", 0, "第一题回答"); str = str + panduan("score2", 2, "第二题回答"); str = str + panduan("score3", 2, "第三题回答"); str = str + panduan("score4", 0, "第四题回答"); str = str + panduan("score5", 0, "第五题回答"); str = str + panduan("score6", 2, "第六题回答"); str = str + panduan("score7", 3, "第七题回答"); str = str + panduan("score8", 2, "第八题回答"); str = str + panduan("score9", 2, "第九题回答"); str = str + panduan("score10", 1, "第十题回答"); alert(str); } function panduan(name, daan, xinxi) { var jieguo = ""; var jieguo1 = document.getElementsByName(name); if (jieguo1[daan].checked == true) { jieguo = jieguo + xinxi + "正确。\n"; } else { jieguo = jieguo + xinxi + "错误。\n"; } return jieguo; } </SCRIPT> </head> <body> <p>1.写“Hello World”的正确javascript语法是?().</p> <form> <input type="radio" name="score" value="1"/> document.write("Hello World") <input type="radio" name="score" value="2"/>B. "Hello World" <input type="radio" name="score" value="3"/>C. response.write("Hello World")  <input type="radio" name="score" value="4"/>D. ("Hello World")  </form> <br /><br /> <p>2.产生当前日期的方法是 </p> <form> <input type="radio" name="score2" value="1"/>A.Now();  <input type="radio" name="score2" value="2"/>B.Date() <input type="radio" name="score2" value="3"/>C.new Date() <input type="radio" name="score2" value="4"/>D.new Now()  </form> <br /><br /> <p>3.在HTML文档对象模型中,history对象的()用于加载历史列表中的下一个URL页面。 </p> <form> <input type="radio" name="score3" value="1"/>A.next()    <input type="radio" name="score3" value="2"/>B.back() <input type="radio" name="score3" value="3"/>C.forward()  <input type="radio" name="score3" value="4"/>D.go(-1) </form> <br /><br /> <p>4、在Javascript浏览器对象模型中,window对象的()属性用来指定浏览器状态栏中显示的临时消息。 </p> <form> <input type="radio" name="score4" value="1"/>A.status    <input type="radio" name="score4" value="2"/>B.screen   <input type="radio" name="score4" value="3"/>C.history   <input type="radio" name="score4" value="4"/>D.document </form> <br /><br /> <p>5、在Javascript中,可以使用Date对象的()方法返回一个月中的每一天。 </p> <form> <input type="radio" name="score5" value="1"/>A.getDate     <input type="radio" name="score5" value="2"/>B.getYear  <input type="radio" name="score5" value="3"/>C.getMonth <input type="radio" name="score5" value="4"/>D.getTime  </form> <br /><br /> <p>6、在Javascript中要改变页面文档的背景色,需要修改document对象的()属性。 </p>  <form> <input type="radio" name="score6" value="1"/>A.BackColor <input type="radio" name="score6" value="2"/>B.BackgroundColor   <input type="radio" name="score6" value="3"/>C.BgColor   <input type="radio" name="score6" value="4"/>D.Background  </form> <br /><br /> <p>7、在HTML页面中,不能与onChange事件处理程序相关联的表单元素有 </p> <form> <input type="radio" name="score7" value="1"/>A.文本框  <input type="radio" name="score7" value="2"/>B.复选框  <input type="radio" name="score7" value="3"/>C.列表框 <input type="radio" name="score7" value="4"/>D.按钮    </form> <br /><br /> <p>8、下列选项中关于浏览器对象的说法错误的是 </p> <form> <input type="radio" name="score8" value="1"/>A.history对象记录了用户在一个浏览器中已经访问过的URLs    <input type="radio" name="score8" value="2"/>B.location对象相当于IE浏览器中的地址栏,包含关于当前URL地址的信息 <input type="radio" name="score8" value="3"/>C.location对象是history对象的父对象 <input type="radio" name="score8" value="4"/>D.location对象是window对象的子对象 </form> <br /><br /> <p>9、Javascript中制作图片代替按钮的提交效果需要手动提交方法submit(),以下调用正确的是</p> <form> <input type="radio" name="score9" value="1"/>A.submit();   <input type="radio" name="score9" value="2"/>B.myform.submit() <input type="radio" name="score9" value="3"/>C.document.myform.submit()  <input type="radio" name="score9" value="4"/>D.window.myform.submit();  </form> <br /><br /> <p>10、某网页中有一个窗体对象,其名称是mainForm,该窗体对象的第一个元素是按钮,其名称是myButton,表述该按钮对象的方法是  </p> <form> <input type="radio" name="score10" value="1"/>A.document.forms.myButton <input type="radio" name="score10" value="2"/>B.document.mainForm.myButton  <input type="radio" name="score10" value="3"/>C.document.forms[0].element[0]  <input type="radio" name="score10" value="4"/>D.以上都可以  <INPUT TYPE="button" onclick="show();" value="提交"> </form> <br /><br /> <button id="button">得分是</button> <script type="text/javascript"> var sco = document.getElementsByTagName("input"); var butn = document.getElementById("button"); butn.onclick = function () { var gec = 0; for (var i = 0; i < sco.length; i++) { if (sco[i].checked == true) { var sc = parseInt(sco[i].value); gec += sc; } } alert(gec); } </script> </body> </html> ``` 我只能做这种弹出提示框的 不能把分数和相应错题答案连接到新窗口
Dwr2 无法读取Struts2 ModelDriven的Action返回的值
根据JavaEye好人的文章我开练了DWR访问Struts2 的Action: 刚开始学DWR2.0,想让他访问Struts2的Action,从网上找了些资料,下载了人家修改编译好的Dwr4Struts2.jar,按照配置说明写了一个例子,使用属性驱动的方法, <script language="javascript"> function testDwr(){ DWRActionUtil.execute( {namespace:'/jsp', action:'UserLogin', executeResult:'false'}, 'loginform', writePage); } function writemodel(data){ alert("departure = "+data["uname"]); } </script> <form id="loginform" action="UserLogin.action" method="post"> <input type="text" size="20" name="uname" id="uname"> <input type="text" size="20" name="password" id="password"> <input type="button" value="TestDwr" id="button1" onclick="testDwr()"> </form> 以上代码可以工作,能够alert出我输入的uname。 但是如果使用ModelDriven模式,我new一个Object 的user,把 uname和password 赋值给user.uname和user.password,然使用 function testModelDwr(){ DWRActionUtil.execute( {namespace:'/jsp', action:'UserLogin', executeResult:'false'}, user, writePage); } 去发送请求,通过在ModelAction 里跟踪,能正确得到我传入的user对象,下面是我的ModelAction. public class ModelLoginAction extends ActionSupport implements ModelDriven <User>{ private static final long serialVersionUID = 1640375596297189219L; private User user = new User(); public String login() { UserManager um = new UserManager(); System.out.println(user.getUname()+"="+user.getPassword()); User login = um.login(user); if (login!=null) { return SUCCESS; } else { return ERROR; } } @Override public User getModel() { return user; } } 但是奇怪的是我使用 alert(data["uname"]) 弹出的是undifined。如果是alert(data)则是[object object]. 请指点该怎么显示ModelDriven返回的对象数据。
spring 多表增删改查 多次操作不刷新
不知道是jsp页面代码的问题 还是控制器写的有问题 增加连续写到第3个吗四个服务器就不动了 也不报错 主要的控制器部分代码如下 ``` ​@RequestMapping(value = "/addRiddle") public String addRiddle (Riddle riddle, HttpServletRequest request) { riddleServ.save(riddle); return this.getAllRiddle(request); } @RequestMapping(value="/getAllRiddle") public String getAllRiddle(HttpServletRequest request) { List<Riddle> riddles = this.riddleServ.getAllRiddles(); request.setAttribute("riddles", riddles); return "/pages/curd/showriddle"; } @RequestMapping(value="/del") public String delRiddle(String id, HttpServletRequest request) { riddle = riddleServ.getById(id); this.riddleServ.delect(id); this.getAllRiddle(request); return "/pages/curd/showriddle"; } ``` jsp的showriddle的主要部分 ``` <script type="text/javascript"> function del(rId) { window.location.href="/game-1.0.1/riddle/del?id="+rId; windows.location.reload(); } function update(rId) { window.location.href="/game-1.0.1/riddle/updateById?rId="+rId; windows.location.reload(); } </script> </head> <body> <div align="center"> <table border="1"> <tr> <td colspan="6"><h1>show list</h1></td> </tr> <tr> <td>属性名</td> <td>谜语名</td> <td>谜语信息</td> <td colspan="2">操作</td> </tr> <c:forEach items="${riddles}" var="r"> <tr onmouseover="this.bgColor='pink'" onmouseout="this.bgColor=''"> <td>${r.character.cName}</td> <td>${r.rName}</td> <td>${r.rInfo}</td> <td><input type="button" value="删除" onclick="del(${r.rId})"/></td> <td><input type="button" value="修改" onclick="update(${r.rId})"/></td> </tr> </c:forEach> <tr> <td colspan="3"><a href="/game-1.0.1/pages/curd/addriddle.jsp">添加</a></td> </tr> </table> </div> ``` 麻烦大家帮忙看看 谢谢
怎么计算选择题分数 不会跳转显示所有答案页面和分数计算
![图片说明](https://img-ask.csdn.net/upload/201512/30/1451434937_658935.png) <!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> <title>测试</title> <SCRIPT language="JavaScript"> function show() { var str = ""; str = str + panduan("score", 0, "第一题回答"); str = str + panduan("score2", 2, "第二题回答"); str = str + panduan("score3", 2, "第三题回答"); str = str + panduan("score4", 0, "第四题回答"); str = str + panduan("score5", 0, "第五题回答"); str = str + panduan("score6", 2, "第六题回答"); str = str + panduan("score7", 3, "第七题回答"); str = str + panduan("score8", 2, "第八题回答"); str = str + panduan("score9", 2, "第九题回答"); str = str + panduan("score10", 1, "第十题回答"); alert(str); } function panduan(name, daan, xinxi) { var jieguo = ""; var jieguo1 = document.getElementsByName(name); if (jieguo1[daan].checked == true) { jieguo = jieguo + xinxi + "正确。\n"; } else { jieguo = jieguo + xinxi + "错误。\n"; } return jieguo; } </SCRIPT> </head> <body> <p>1.写“Hello World”的正确javascript语法是?().</p> <form> <input type="radio" name="score" value="1"/> document.write("Hello World") <input type="radio" name="score" value="2"/>B. "Hello World" <input type="radio" name="score" value="3"/>C. response.write("Hello World") <input type="radio" name="score" value="4"/>D. ("Hello World") </form> <br /><br /> <p>2.产生当前日期的方法是 </p> <form> <input type="radio" name="score2" value="1"/>A.Now(); <input type="radio" name="score2" value="2"/>B.Date() <input type="radio" name="score2" value="3"/>C.new Date() <input type="radio" name="score2" value="4"/>D.new Now() </form> <br /><br /> <p>3.在HTML文档对象模型中,history对象的()用于加载历史列表中的下一个URL页面。 </p> <form> <input type="radio" name="score3" value="1"/>A.next() <input type="radio" name="score3" value="2"/>B.back() <input type="radio" name="score3" value="3"/>C.forward() <input type="radio" name="score3" value="4"/>D.go(-1) </form> <br /><br /> <p>4、在Javascript浏览器对象模型中,window对象的()属性用来指定浏览器状态栏中显示的临时消息。 </p> <form> <input type="radio" name="score4" value="1"/>A.status <input type="radio" name="score4" value="2"/>B.screen <input type="radio" name="score4" value="3"/>C.history <input type="radio" name="score4" value="4"/>D.document </form> <br /><br /> <p>5、在Javascript中,可以使用Date对象的()方法返回一个月中的每一天。 </p> <form> <input type="radio" name="score5" value="1"/>A.getDate <input type="radio" name="score5" value="2"/>B.getYear <input type="radio" name="score5" value="3"/>C.getMonth <input type="radio" name="score5" value="4"/>D.getTime </form> <br /><br /> <p>6、在Javascript中要改变页面文档的背景色,需要修改document对象的()属性。 </p> <form> <input type="radio" name="score6" value="1"/>A.BackColor <input type="radio" name="score6" value="2"/>B.BackgroundColor <input type="radio" name="score6" value="3"/>C.BgColor <input type="radio" name="score6" value="4"/>D.Background </form> <br /><br /> <p>7、在HTML页面中,不能与onChange事件处理程序相关联的表单元素有 </p> <form> <input type="radio" name="score7" value="1"/>A.文本框 <input type="radio" name="score7" value="2"/>B.复选框 <input type="radio" name="score7" value="3"/>C.列表框 <input type="radio" name="score7" value="4"/>D.按钮 </form> <br /><br /> <p>8、下列选项中关于浏览器对象的说法错误的是 </p> <form> <input type="radio" name="score8" value="1"/>A.history对象记录了用户在一个浏览器中已经访问过的URLs <input type="radio" name="score8" value="2"/>B.location对象相当于IE浏览器中的地址栏,包含关于当前URL地址的信息 <input type="radio" name="score8" value="3"/>C.location对象是history对象的父对象 <input type="radio" name="score8" value="4"/>D.location对象是window对象的子对象 </form> <br /><br /> <p>9、Javascript中制作图片代替按钮的提交效果需要手动提交方法submit(),以下调用正确的是</p> <form> <input type="radio" name="score9" value="1"/>A.submit(); <input type="radio" name="score9" value="2"/>B.myform.submit() <input type="radio" name="score9" value="3"/>C.document.myform.submit() <input type="radio" name="score9" value="4"/>D.window.myform.submit(); </form> <br /><br /> <p>10、某网页中有一个窗体对象,其名称是mainForm,该窗体对象的第一个元素是按钮,其名称是myButton,表述该按钮对象的方法是 </p> <form> <input type="radio" name="score10" value="1"/>A.document.forms.myButton <input type="radio" name="score10" value="2"/>B.document.mainForm.myButton <input type="radio" name="score10" value="3"/>C.document.forms[0].element[0] <input type="radio" name="score10" value="4"/>D.以上都可以 <INPUT TYPE="button" onclick="show();" value="提交"> </form> <br /><br /> <button id="button">得分是</button> <script type="text/javascript"> var sco = document.getElementsByTagName("input"); var butn = document.getElementById("button"); butn.onclick = function () { var gec = 0; for (var i = 0; i < sco.length; i++) { if (sco[i].checked == true) { var sc = parseInt(sco[i].value); gec += sc; } } alert(gec); } </script> </body> </html> 如果按一题10分计算 这个计算代码该如何写
如何获取同一个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> ```
Kafka实战(三) - Kafka的自我修养与定位
Apache Kafka是消息引擎系统,也是一个分布式流处理平台(Distributed Streaming Platform) Kafka是LinkedIn公司内部孵化的项目。LinkedIn最开始有强烈的数据强实时处理方面的需求,其内部的诸多子系统要执行多种类型的数据处理与分析,主要包括业务系统和应用程序性能监控,以及用户行为数据处理等。 遇到的主要问题: 数据正确性不足 数据的收集主要...
volatile 与 synchronize 详解
Java支持多个线程同时访问一个对象或者对象的成员变量,由于每个线程可以拥有这个变量的拷贝(虽然对象以及成员变量分配的内存是在共享内存中的,但是每个执行的线程还是可以拥有一份拷贝,这样做的目的是加速程序的执行,这是现代多核处理器的一个显著特性),所以程序在执行过程中,一个线程看到的变量并不一定是最新的。 volatile 关键字volatile可以用来修饰字段(成员变量),就是告知程序任何对该变量...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
有哪些让程序员受益终生的建议
从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!! 一腔肺腑之言,能看进去多少,就看你自己了!!! 目录: 在校生篇: 为什么要尽量进大厂? 如何选择语言及方...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
GitHub开源史上最大规模中文知识图谱
近日,一直致力于知识图谱研究的 OwnThink 平台在 Github 上开源了史上最大规模 1.4 亿中文知识图谱,其中数据是以(实体、属性、值),(实体、关系、实体)混合的形式组织,数据格式采用 csv 格式。 到目前为止,OwnThink 项目开放了对话机器人、知识图谱、语义理解、自然语言处理工具。知识图谱融合了两千五百多万的实体,拥有亿级别的实体属性关系,机器人采用了基于知识图谱的语义感...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
微信支付崩溃了,但是更让马化腾和张小龙崩溃的竟然是……
loonggg读完需要3分钟速读仅需1分钟事件还得还原到昨天晚上,10 月 29 日晚上 20:09-21:14 之间,微信支付发生故障,全国微信支付交易无法正常进行。然...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
YouTube排名第一的励志英文演讲《Dream(梦想)》
Idon’t know what that dream is that you have, I don't care how disappointing it might have been as you've been working toward that dream,but that dream that you’re holding in your mind, that it’s po...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
相关热词 c#中dns类 c#合并的excel c# implicit c#怎么保留3个小数点 c# 串口通信、 网络调试助手c# c# 泛型比较大小 c#解压分卷问题 c#启动居中 c# 逻辑或运算符
立即提问