基于jQuery的动态增删改查表格信息,可左键/右键提示(原创自Zjmainstay)


Posted in Javascript onJuly 31, 2012

在线演示: http://demo.3water.com/js/2012/jqueryAutoAddDeleteTableTr/jqueryAutoAddDeleteTableTr_leftClick.html
//左键 

<html> 
<head> 
<title>jQuery 动态增删表格</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta http-equiv="Content-Language" content="zh-CN" /> 
<script type="text/javascript" src="http://demo.3water.com/jslib/jquery/jquery-1.6.2.min.js"></script> 
</head> 
<body> 
<script type="text/javascript"> 
$(document).ready(function(){ 
var addToTrTop = 10; 
var addToTrLeft = 534; 
var preEdit = null; 
var inputData = '<input id="tmpEditor" type="text" value="?"></input>'; 
var bindListening = function(){ 
//表格点击响应 
$("td").unbind().click(function(){ 
var tdData = $("#tmpEditor").val(); 
if( !$(this).parent().hasClass('editting')) { 
preEdit&&preEdit.empty().html(tdData.trim(' ')); 
preEdit = null; 
$("#tmpEditor").parent().empty().html($("#tmpEditor").val()); 
$(".editting").removeClass('editting'); 
}else if( preEdit && (preEdit.parent().children().index($(preEdit)) != $(this).parent().children().index($(this))) ){ 
preEdit.empty().html(tdData.trim(' ')); 
preEdit = null; 
}else{ 
if(!$("#tmpEditor").val()) { 
preEdit = $(this); 
var tdData = $(this).html(); 
$(this).empty().append(inputData.replace('?',tdData)); 
$("#tmpEditor").focus(); 
} 
} 
if(!$(this).parent().hasClass('editting')){ 
var tipStyle = 'top:'+(parseInt($(this).offset().top)+addToTrTop)+'px;left:'+(parseInt($(this).parent().offset().left)+addToTrLeft)+'px;'; 
$("#clickTips").attr('style',tipStyle).show(); 
} 
bindListening(); 
}); 
//向上增加一行 
$("#addUp").unbind().click(function(){ 
doAddTrData($(this),'up'); 
bindListening(); 
}); 
//向下增加一行 
$("#addDown").unbind().click(function(){ 
doAddTrData($(this),'down'); 
bindListening(); 
}); 
//删除当前行 
$("#delete").unbind().click(function(){ 
doDeleteTrData($(this),'delete'); 
bindListening(); 
}); 
//编辑当前行 
$("#edit").unbind().click(function(){ 
doEditTrData($(this),'edit'); 
bindListening(); 
}); 
var addTrData = $("tr:first").clone(true).attr('class','newAdd'); 
var getIndex = function(clickedTd,type){ 
var fields = $("tr"); 
var addIndex = -1; 
for(var i=1;i<fields.length;i++){ 
var tipStyle = clickedTd.parent().attr('style'); 
var topValue = 'top: '+(parseInt(fields.eq(i).offset().top)+addToTrTop); 
var ie_topValue = 'top: '+(parseInt(fields.eq(i).offset().top)+(addToTrTop-2)); 
if((tipStyle.indexOf(topValue) != -1) || (tipStyle.indexOf(ie_topValue) != -1)) { 
switch(type.toLowerCase()){ 
case 'up': 
addIndex = i-1; 
break; 
case 'down': 
case 'edit': 
case 'delete': 
addIndex = i; 
break; 
} 
} 
} 
return addIndex; 
} 
var doAddTrData = function(clickedTd,type){ 
if(getIndex(clickedTd,type) == -1) return false; 
else { 
var index=getIndex(clickedTd,type); 
} 
$("table tr").eq(index).after(addTrData); 
setTimeout('$(".newAdd").attr("class",null)',1000); 
$("#clickTips").hide(); 
return false; 
} 
var doDeleteTrData = function(clickedTd,type){ 
if(getIndex(clickedTd,type) == -1) return false; 
else { 
var index=getIndex(clickedTd,type); 
} 
$("table tr").eq(index).remove(); 
$("#clickTips").hide(); 
return false; 
} 
var doEditTrData = function(clickedTd,type){ 
if(getIndex(clickedTd,type) == -1) return false; 
else { 
var index=getIndex(clickedTd,type); 
} 
$("table tr").eq(index).addClass('editting'); 
$("#clickTips").hide(); 
return false; 
} 
} 
bindListening(); 
}); 
</script> 
<style type="text/css"> 
table{ 
width:580px; 
margin:0 auto; 
} 
td,#tmpEditor{ 
display:block; 
float:left; 
border:1px solid #000000; 
margin:auto 0.5px; 
width:60px; 
height:20px; 
} 
#clickTips{ 
border:1px solid #000000; 
position:absolute; 
left:3px; 
width:120px; 
padding:3px; 
display:none; 
background-color:#F5FFFA; 
z-index:3; 
} 
span{ 
float:left; 
width:100px; 
height:20px; 
clear:both; 
} 
.cloneTr{ 
display:none; 
} 
.newAdd td{ 
background-color:#FFFACD; 
} 
.editting td{ 
background-color:#F0F0F0; 
} 
</style> 
<div id="tableContainer"> 
<table> 
<tr class="cloneTr"> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
</tr> 
<tr> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td>1</td> 
</tr> 
<tr> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td>2</td> 
</tr> 
<tr> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td>3</td> 
</tr> 
<tr> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td>4</td> 
</tr> 
<tr> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td>5</td> 
</tr> 
<tr> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td>6</td> 
</tr> 
</table> 
</div> 
<div id="clickTips"> 
<span id="addUp">向上增加一行</span> 
<span id="edit">修改当前一行</span> 
<span id="addDown">向下增加一行</span> 
<span id="delete">删除当前行</span> 
</div> 
</body> 
</html>

jqueryAutoAddDeleteTableTr_rightClick.html
//右键(含屏蔽浏览器右键功能)
<html> 
<head> 
<title>jQuery 动态增删表格</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta http-equiv="Content-Language" content="zh-CN" /> 
<script type="text/javascript" src="http://demo.3water.com/jslib/jquery/jquery-1.6.2.min.js"></script> 
</head> 
<body> 
<script type="text/javascript"> 
$(document).ready(function(){ 
var addToTrTop = 10; 
var addToTrLeft = 60; 
var preEdit = null; 
var inputData = '<input id="tmpEditor" type="text" value="?"></input>'; 
var bindListening = function(){ 
//屏蔽浏览器右键 
if (window.Event) document.captureEvents(Event.MOUSEUP); 
function nocontextmenu(e){ 
if(!e) var e=window.event; 
e.cancelBubble = true 
e.returnValue = false; 
return false; 
} 
function norightclick(e){ 
if(!e) var e=window.event; 
if (window.Event){ 
if (e.which == 2 || e.which == 3) 
return false; 
}else if (e.keyCode == 2 || e.keyCode == 3){ 
e.cancelBubble = true 
e.returnValue = false; 
return false; 
} 
} 
document.oncontextmenu = nocontextmenu; // for IE5+ 
document.onmousedown = norightclick; // for all others 
//End 屏蔽浏览器右键 
//表格右键响应 
$("td").mousedown(function(e){ 
var code; 
if(!e) var e=window.event; 
if(e.keyCode) { 
code=e.keyCode; 
}else if(e.which){ 
code = e.which; 
} 
var tdData = $("#tmpEditor").val(); 
if(code == 3){ 
var tipStyle = 'top:'+(parseInt($(this).offset().top)+addToTrTop)+'px;left:'+(parseInt($(this).offset().left)+addToTrLeft)+'px;'; 
$("#clickTips").attr('style',tipStyle).show(); 
return false; 
} 
if(code == 1){ 
if( !$(this).parent().hasClass('editting')) { 
preEdit&&preEdit.empty().html(tdData.trim(' ')); 
preEdit = null; 
$("#tmpEditor").parent().empty().html($("#tmpEditor").val()); 
$(".editting").removeClass('editting'); 
}else if( preEdit && (preEdit.parent().children().index($(preEdit)) != $(this).parent().children().index($(this))) ){ 
preEdit.empty().html(tdData.trim(' ')); 
preEdit = null; 
}else{ 
if(!$("#tmpEditor").val()) { 
preEdit = $(this); 
var tdData = $(this).html(); 
$(this).empty().append(inputData.replace('?',tdData)); 
$("#tmpEditor").focus(); 
} 
} 
return false; 
} 
bindListening(); 
}); //End 表格右键响应 
//向上增加一行 
$("#addUp").unbind().click(function(){ 
doAddTrData($(this),'up'); 
bindListening(); 
}); 
//向下增加一行 
$("#addDown").unbind().click(function(){ 
doAddTrData($(this),'down'); 
bindListening(); 
}); 
//删除当前行 
$("#delete").unbind().click(function(){ 
doDeleteTrData($(this),'delete'); 
bindListening(); 
}); 
//编辑当前行 
$("#edit").unbind().click(function(){ 
doEditTrData($(this),'edit'); 
bindListening(); 
}); 
var addTrData = $("tr:first").clone(true).attr('class','newAdd'); 
var getIndex = function(clickedTd,type){ 
var fields = $("tr"); 
var addIndex = -1; 
for(var i=1;i<fields.length;i++){ 
var tipStyle = clickedTd.parent().attr('style'); 
var topValue = 'top: '+(parseInt(fields.eq(i).offset().top)+addToTrTop); 
var ie_topValue = 'top: '+(parseInt(fields.eq(i).offset().top)+(addToTrTop-2)); 
if((tipStyle.indexOf(topValue) != -1) || (tipStyle.indexOf(ie_topValue) != -1)) { 
switch(type.toLowerCase()){ 
case 'up': 
addIndex = i-1; 
break; 
case 'down': 
case 'edit': 
case 'delete': 
addIndex = i; 
break; 
} 
} 
} 
return addIndex; 
} 
var doAddTrData = function(clickedTd,type){ 
if(getIndex(clickedTd,type) == -1) return false; 
else { 
var index=getIndex(clickedTd,type); 
} 
$("table tr").eq(index).after(addTrData); 
setTimeout('$(".newAdd").attr("class",null)',1000); 
$("#clickTips").hide(); 
return false; 
} 
var doDeleteTrData = function(clickedTd,type){ 
if(getIndex(clickedTd,type) == -1) return false; 
else { 
var index=getIndex(clickedTd,type); 
} 
$("table tr").eq(index).remove(); 
$("#clickTips").hide(); 
return false; 
} 
var doEditTrData = function(clickedTd,type){ 
if(getIndex(clickedTd,type) == -1) return false; 
else { 
var index=getIndex(clickedTd,type); 
} 
$("table tr").eq(index).addClass('editting'); 
$("#clickTips").hide(); 
return false; 
} 
} 
bindListening(); 
}); 
</script> 
<style type="text/css"> 
table{ 
width:580px; 
margin:0 auto; 
} 
td,#tmpEditor{ 
display:block; 
float:left; 
border:1px solid #000000; 
margin:auto 0.5px; 
width:60px; 
height:20px; 
} 
#clickTips{ 
border:1px solid #000000; 
position:absolute; 
left:3px; 
width:120px; 
padding:3px; 
display:none; 
background-color:#F5FFFA; 
z-index:3; 
} 
span{ 
float:left; 
width:100px; 
height:20px; 
clear:both; 
} 
.cloneTr{ 
display:none; 
} 
.newAdd td{ 
background-color:#FFFACD; 
} 
.editting td{ 
background-color:#F0F0F0; 
} 
</style> 
<div id="tableContainer"> 
<table> 
<tr class="cloneTr"> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
</tr> 
<tr> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td>1</td> 
</tr> 
<tr> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td>2</td> 
</tr> 
<tr> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td>3</td> 
</tr> 
<tr> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td>4</td> 
</tr> 
<tr> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td>5</td> 
</tr> 
<tr> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td>6</td> 
</tr> 
</table> 
</div> 
<div id="clickTips"> 
<span id="addUp">向上增加一行</span> 
<span id="edit">修改当前一行</span> 
<span id="addDown">向下增加一行</span> 
<span id="delete">删除当前行</span> 
</div> 
</body> 
</html>

jqueryAutoAddDeleteTableTr_leftClick_addsearch.html
//左键添加查询功能
<html> 
<head> 
<title>jQuery 动态增删表格</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta http-equiv="Content-Language" content="zh-CN" /> 
<script type="text/javascript" src="http://demo.3water.com/jslib/jquery/jquery-1.6.2.min.js"></script> 
</head> 
<body> 
<script type="text/javascript"> 
$(document).ready(function(){ 
var addToTrTop = 10; 
var addToTrLeft = 534; 
var addToTdLeft = 60; //若设置addToTdLeft则addToTrLeft失效 
var preEdit = null; 
var inputData = '<input id="tmpEditor" type="text" value="?"></input>'; 
var bindListening = function(){ 
//表格点击响应 
$("td").unbind().click(function(){ 
if($(this).hasClass('search')) return false; 
var tdData = $("#tmpEditor").val(); 
if( !$(this).parent().hasClass('editting')) { 
preEdit&&preEdit.empty().html(tdData.trim(' ')); 
preEdit = null; 
$("#tmpEditor").parent().empty().html($("#tmpEditor").val()); 
$(".editting").removeClass('editting'); 
}else if( preEdit && (preEdit.parent().children().index($(preEdit)) != $(this).parent().children().index($(this))) ){ 
preEdit.empty().html(tdData.trim(' ')); 
preEdit = null; 
}else{ 
if(!$("#tmpEditor").val()) { 
preEdit = $(this); 
var tdData = $(this).html(); 
$(this).empty().append(inputData.replace('?',tdData)); 
$("#tmpEditor").focus(); 
} 
} 
if(!$(this).parent().hasClass('editting')){ 
if(!addToTdLeft){ 
var offsetLeft = (parseInt($(this).parent().offset().left)+addToTrLeft); 
}else { 
var offsetLeft = (parseInt($(this).offset().left)+addToTdLeft); 
} 
var tipStyle = 'top:'+(parseInt($(this).offset().top)+addToTrTop)+'px;left:'+offsetLeft+'px;'; 
$("#clickTips").attr('style',tipStyle).show(); 
} 
bindListening(); 
}); 
//向上增加一行 
$("#addUp").unbind().click(function(){ 
doAddTrData($(this),'up'); 
bindListening(); 
}); 
//向下增加一行 
$("#addDown").unbind().click(function(){ 
doAddTrData($(this),'down'); 
bindListening(); 
}); 
//删除当前行 
$("#delete").unbind().click(function(){ 
doDeleteTrData($(this),'delete'); 
bindListening(); 
}); 
//编辑当前行 
$("#edit").unbind().click(function(){ 
doEditTrData($(this),'edit'); 
bindListening(); 
}); 
//查询操作 
$("#searchButton").click(function(){ 
$("#clickTips").hide(); 
var trs = $("#tableContainer").find("tr"); 
var tdLength = trs.eq(0).children('td').length; 
var RegExp = ''; 
for(var i=0;i<tdLength;i++){ 
RegExp += '[^,]*'+trs.eq(1).find('input').eq(i).val()+'[^,]*,'; 
} 
//不加eval则正则匹配失效 
RegExp = eval('/' + RegExp.substr(0,RegExp.length-1) + '/i'); 
var stringObject = []; 
for(var i=2;i<trs.length;i++){ 
stringObject[i] = ''; 
for(var j=0;j<tdLength;j++){ 
stringObject[i] += trs.eq(i).find('td').eq(j).html()+','; 
} 
stringObject[i] = stringObject[i].substr(0,stringObject[i].length-1).toString(); 
} 
for(var i=2;i<trs.length;i++){ 
if(stringObject[i].search(RegExp)) { 
trs.eq(i).hide(); 
}else{ 
trs.eq(i).show(); 
} 
} 
bindListening(); 
}); 
var addTrData = $("tr:first").clone(true).attr('class','newAdd'); 
var getIndex = function(clickedTd,type){ 
var fields = $("tr"); 
var addIndex = -1; 
for(var i=1;i<fields.length;i++){ 
var tipStyle = clickedTd.parent().attr('style'); 
var topValue = 'top: '+(parseInt(fields.eq(i).offset().top)+addToTrTop); 
var ie_topValue = 'top: '+(parseInt(fields.eq(i).offset().top)+(addToTrTop-2)); 
if((tipStyle.indexOf(topValue) != -1) || (tipStyle.indexOf(ie_topValue) != -1)) { 
switch(type.toLowerCase()){ 
case 'up': 
addIndex = i-1; 
break; 
case 'down': 
case 'edit': 
case 'delete': 
addIndex = i; 
break; 
} 
} 
} 
return addIndex; 
} 
$("#clearSearchButton").click(function(){ 
$("#clickTips").hide(); 
$(".search input[type=text]").val(''); 
$("tr").show(); 
$("tr.cloneTr").hide(); 
}) 
var doAddTrData = function(clickedTd,type){ 
if(getIndex(clickedTd,type) == -1) return false; 
else { 
var index=getIndex(clickedTd,type); 
} 
$("table tr").eq(index).after(addTrData); 
setTimeout('$(".newAdd").attr("class",null)',1000); 
$("#clickTips").hide(); 
return false; 
} 
var doDeleteTrData = function(clickedTd,type){ 
if(getIndex(clickedTd,type) == -1) return false; 
else { 
var index=getIndex(clickedTd,type); 
} 
$("table tr").eq(index).remove(); 
$("#clickTips").hide(); 
return false; 
} 
var doEditTrData = function(clickedTd,type){ 
if(getIndex(clickedTd,type) == -1) return false; 
else { 
var index=getIndex(clickedTd,type); 
} 
$("table tr").eq(index).addClass('editting'); 
$("#clickTips").hide(); 
return false; 
} 
} 
bindListening(); 
}); 
</script> 
<style type="text/css"> 
table{ 
margin:0 auto; 
} 
td,#tmpEditor{ 
display:block; 
float:left; 
border:1px solid #000000; 
margin:auto 0.5px; 
width:60px; 
height:20px; 
} 
#clickTips{ 
border:1px solid #000000; 
position:absolute; 
left:3px; 
width:120px; 
padding:3px; 
display:none; 
background-color:#F5FFFA; 
z-index:3; 
} 
span{ 
float:left; 
width:100px; 
height:20px; 
clear:both; 
} 
.cloneTr{ 
display:none; 
} 
.newAdd td{ 
background-color:#FFFACD; 
} 
.editting td{ 
background-color:#F0F0F0; 
} 
.search{ 
background-color:#dddccc; 
} 
.search input{ 
padding-bottom: 0; 
padding-right: 7px; 
} 
.searchButtonTd{ 
float:left; 
} 
#searchButton,#clearSearchButton{ 
margin-left: -2px; 
margin-top: -2px; 
padding-bottom: 0; 
padding-right: 20px; 
} 
</style> 
<div id="tableContainer"> 
<table> 
<tr class="cloneTr"> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
</tr> 
<tr> 
<td class="search"><input type="text" size="6"/></td> 
<td class="search"><input type="text" size="6"/></td> 
<td class="search"><input type="text" size="6"/></td> 
<td class="search"><input type="text" size="6"/></td> 
<td class="search"><input type="text" size="6"/></td> 
<td class="search"><input type="text" size="6"/></td> 
<td class="search"><input type="text" size="6"/></td> 
<td class="search"><input type="text" size="6"/></td> 
<td class="search searchButtonTd"><input id="searchButton" type="button" size="10" value="查询"/></td> 
<td class="search searchButtonTd"><input id="clearSearchButton" type="button" size="10" value="清除"/></td> 
</tr> 
<tr> 
<td>1</td> 
<td>2</td> 
<td>3</td> 
<td>4</td> 
<td>5</td> 
<td>6</td> 
<td>7</td> 
<td>8</td> 
</tr> 
<tr> 
<td>a</td> 
<td>b</td> 
<td>c</td> 
<td>d</td> 
<td>e</td> 
<td>f</td> 
<td>g</td> 
<td>h</td> 
</tr> 
<tr> 
<td>A</td> 
<td>B</td> 
<td>C</td> 
<td>D</td> 
<td>E</td> 
<td>F</td> 
<td>G</td> 
<td>H</td> 
</tr> 
<tr> 
<td>aa</td> 
<td>bb</td> 
<td>cc</td> 
<td>dd</td> 
<td>ee</td> 
<td>ff</td> 
<td>gg</td> 
<td>hh</td> 
</tr> 
<tr> 
<td>111</td> 
<td>222</td> 
<td>333</td> 
<td>444</td> 
<td>555</td> 
<td>666</td> 
<td>777</td> 
<td>888</td> 
</tr> 
<tr> 
<td>1a</td> 
<td>2b</td> 
<td>3c</td> 
<td>4d</td> 
<td>5e</td> 
<td>6f</td> 
<td>7g</td> 
<td>8h</td> 
</tr> 
</table> 
</div> 
<div id="clickTips"> 
<span id="addUp">向上增加一行</span> 
<span id="edit">修改当前一行</span> 
<span id="addDown">向下增加一行</span> 
<span id="delete">删除当前行</span> 
</div> 
</body> 
</html>

PS:
var addToTrTop = 10;
var addToTrLeft = 534;

var addToTdLeft = 60; //若设置addToTdLeft则addToTrLeft失效

表示提示DIV clickTips距离当前tr顶部和左部的偏移量,可自行修改,可为负数表示上移或左移。

软件下载:下载
作者:Zjmainstay


出处:http://www.cnblogs.com/Zjmainstay/

Javascript 相关文章推荐
Js callBack 返回前一页的js方法
Nov 30 Javascript
使用原生js实现页面蒙灰(mask)效果示例代码
Jun 20 Javascript
JavaScript设计模式之策略模式实例
Oct 10 Javascript
使用VS开发 Node.js指南
Jan 06 Javascript
JQuery中上下文选择器实现方法
May 18 Javascript
使用AmplifyJS组件配合JavaScript进行编程的指南
Jul 28 Javascript
用JavaScript做简易的购物车的代码示例
Oct 20 Javascript
vue.extend与vue.component的区别和联系
Sep 19 Javascript
小程序实现自定义导航栏适配完美版
Apr 02 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
Apr 29 Javascript
jquery html添加元素/删除元素操作实例详解
May 20 jQuery
Vue中foreach数组与js中遍历数组的写法说明
Jun 05 Vue.js
jQuery.each()用法分享
Jul 31 #Javascript
artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载
Jul 31 #Javascript
JavaScript中的私有/静态属性介绍
Jul 26 #Javascript
13 个JavaScript 性能提升技巧分享
Jul 26 #Javascript
了解一点js的Eval函数
Jul 26 #Javascript
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
Jul 26 #Javascript
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
Jul 25 #Javascript
You might like
php面向对象全攻略 (八)重载新的方法
2009/09/30 PHP
PHP安全配置详细说明
2011/09/26 PHP
php生成扇形比例图实例
2013/11/06 PHP
php防止伪造的数据从URL提交方法
2014/06/27 PHP
ThinkPHP中Session用法详解
2014/11/29 PHP
php根据一个给定范围和步进生成数组的方法
2015/06/19 PHP
设定php简写功能的方法
2019/11/28 PHP
表格单元格交错着色实现思路及代码
2013/04/01 Javascript
node.js [superAgent] 请求使用示例
2015/03/13 Javascript
微信开发 微信授权详解
2016/10/21 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
angular2 组件之间通过service互相传递的实例
2018/09/30 Javascript
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
2020/02/06 NodeJs
[01:02:48]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Liquid
2018/04/03 DOTA
Python subprocess模块功能与常见用法实例详解
2018/06/28 Python
通过Python模块filecmp 对文件比较的实现方法
2018/06/29 Python
Python tkinter label 更新方法
2018/10/11 Python
Tesserocr库的正确安装方式
2018/10/19 Python
详解python运行三种方式
2019/05/13 Python
解决pycharm上的jupyter notebook端口被占用问题
2019/12/17 Python
python中property和setter装饰器用法
2019/12/19 Python
python如何使用代码运行助手
2020/07/03 Python
python程序如何进行保存
2020/07/03 Python
如何解决pycharm调试报错的问题
2020/08/06 Python
详解CSS3开启硬件加速的使用和坑
2017/08/21 HTML / CSS
CSS3 文字动画效果
2020/11/12 HTML / CSS
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
英国标志性生活方式品牌:Skinnydip London
2019/12/15 全球购物
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
工商企业管理应届生求职信
2013/11/03 职场文书
优秀团队获奖感言
2014/02/19 职场文书
高一军训的心得体会
2014/09/01 职场文书
暑假学习心得体会
2014/09/02 职场文书
领导班子作风建设年个人整改措施
2014/09/29 职场文书
婚庆主持词大全
2015/06/30 职场文书