在HTML中,表单是由
// HTMLFormElement继承了HTMLElement;因此它拥有HTML元素具有的默认属性,别且还独有自己的属性和方法;
2.提交表单
(1).通过事件对象,可以阻止submit的默认行为,submit事件的默认行为就是携带数据跳转到指定页面;
(2).我们可以使用submit()方法来自定义触发submit事件;也就是说,并不一定非要点击submit按钮才能提交;
(3).重复提交 // 当一条数据提交到服务器的时候会出现延迟等长时间没反映,导致用户不停的点击提交, // 从而使得重复提交了很多相同的请求,或造成错误或写入数据库多条相同信息;
// 解决重复提交方案 // 第一种:提交之后,立刻禁用点击按钮; document.getElementById('sub').disabled = true; // 将按钮禁用; // 第二种:提交之后,取消后续的表单提交操作; var flag = false; // 设置一个监听变量; if(flag == true)return; // 如果存在则返回退出事件; flag = true; // 否则确定是第一次,改变监听变量的值;
// 表单处理中,建议使用HTMLDOM,它有自己的elements属性,该属性是表单中所有元素的集合; fm.elements[0]; // 获取第一个表单字段元素; fm.elements['user']; // 获取name值是user的表单字段元素; fm.elements.length; // 获取所有表单字段的数量;
事件名 说明 blur 当字段失去焦点时触发; change 对于和元素,在改变value并失去焦点时触发;对于<select>元素,在改变选项时触发; focus 当前字段<a href="/tag/huoqu/" target="_blank" class="keywords">获取</a>焦点时触发;</p> <div class="jb51code"> <pre class="brush:js;"> // 利用focus事件<a href="/tag/xiugai/" target="_blank" class="keywords">修改</a>文本框的背景色; // 利用change事件在<a href="/tag/yonghu/" target="_blank" class="keywords">用户</a>输入非数值字符时再次<a href="/tag/xiugai/" target="_blank" class="keywords">修改</a>背景色; var bext<a href="/tag/Box/" target="_blank" class="keywords">Box</a> = document.forms[0].elements[0]; EventUtil.addHandler(text<a href="/tag/Box/" target="_blank" class="keywords">Box</a>,'focus',function(evt){ evt = EventUtil.getEvent(evt); var target = EventUtil.getTarget(evt); if(target.style.backgroundColor != 'red'){ target.style.backgroundColor = 'yellow'; // 选中状态时文本框的背景是黄色; } }); <p>EventUtil.addHandler(text<a href="/tag/Box/" target="_blank" class="keywords">Box</a>,'blur',function(evt){ // 失去焦点事件;<br /> evt = EventUtil.getEvent(evt);<br /> var target = EventUtil.getTarget(evt);<br /> if(/[^\d]/.test(target.value)){ // 输入非数值字符时;<br /> target.style.backgroundColor = 'red'; // 文本框背景变成红色;<br /> }else{<br /> target.style.backgroundColor = '';<br /> }<br /> });</p> <p>EventUtil.addHandler(text<a href="/tag/Box/" target="_blank" class="keywords">Box</a>,'change',function(evt){ // 改变value值且失去焦点事件;<br /> evt = EventUtil.getEvent(evt);<br /> var target = EventUtil.getTarget(evt);<br /> if(/[^\d]/.test(target.value)){<br /> target.style.backgroundColor = 'red'; // 文本框变成红色;<br /> }else{<br /> target.style.backgroundColor = '';<br /> }<br /> });</pre></p> </div> <p><h3>二 文本框脚本 </h3>// 在HTML中,有两种方式来表现文本框:</p> <p>// 一种是单行文本框<input type="text">;</p> <p>// 一种是多行文本框<textarea>;</p> <p><h3>1.<a href="/tag/huoqu/" target="_blank" class="keywords">获取</a>value值</h3></p> <p>// 虽然<input>在字面上有value值,而<textarea>却没有,但可以通过value<a href="/tag/huoqu/" target="_blank" class="keywords">获取</a>它们的值; var textField = fm.elements[0]; var areaField = fm.elements[1]; alert(textField.value+','+areaField.value); // 得到<input>和<textarea>的value值; // PS:使用表单的value是最推荐的,它是HTMLDOM中的<a href="/tag/shuxing/" target="_blank" class="keywords">属性</a>,不建议使用标准的DOM的<a href="/tag/fangfa/" target="_blank" class="keywords">方法</a>getAttribute(); // 原因是:对value<a href="/tag/shuxing/" target="_blank" class="keywords">属性</a>的<a href="/tag/xiugai/" target="_blank" class="keywords">修改</a>,不一定反映在DOM中;</p> <p>// defaultValue:得到原本的value值;不会因为值的改变而变化; alert(textField.defaultValue); // 得到最初设置的value值;</p> <p><h3>2.选择文本</h3></p> <div class="jb51code"> <pre class="brush:js;"> // 使用select()<a href="/tag/fangfa/" target="_blank" class="keywords">方法</a>,可以将文本框里的<a href="/tag/neirong/" target="_blank" class="keywords">内容</a>选中,并将焦点设置到文本框中; textField.select(); // 在文本框获得焦点时选择其所有文本; <p>// 选取部分文本<br /> // 在使用文本框<a href="/tag/neirong/" target="_blank" class="keywords">内容</a>的时候,我们有时要直接选定部分文本,这个行为还没有标准;<br /> // Firefox的<a href="/tag/jiejuefang/" target="_blank" class="keywords">解决方</a>案是:setSelectionRange()<a href="/tag/fangfa/" target="_blank" class="keywords">方法</a>;它接受两个参数:索引和长度;<br /> textField.setSelectionRange(0,1); // 选择第一个字符;<br /> textField.setSelectionRange(0,textField.value.length); // 选择全部;<br /> // IE8以下<a href="/tag/buzhichi/" target="_blank" class="keywords">不支持</a>这种写法,可以使用IE的范围操作代替;<br /> var range = textField.createTextRange(); // 创建一个文本范围对象;<br /> range.collapse(true); // 将指针移动到起点;<br /> range.moveStart('character',0); // 移动指针,character表示逐字移动;<br /> range.moveEnd('character',1); // 移动终点;<br /> range.select(); // 焦点选定;</p> <p>// 选择部分文本兼容<a href="/tag/hanshu/" target="_blank" class="keywords">函数</a><br /> function selectText(text,start,stop){<br /> if(text.setSelectionRange){<br /> text.setSelectionRange(start,stop);<br /> text.focus();<br /> }else if(text.createTextRange){<br /> var range = text.createTextRange();<br /> range.collapse(true);<br /> range.moveStart('character',start);<br /> range.moveEnd('character',sotp-start);<br /> range.select();<br /> }<br /> }</p> <p>// 与select()<a href="/tag/fangfa/" target="_blank" class="keywords">方法</a>对应的,是一个select事件,可以选<a href="/tag/zhongwen/" target="_blank" class="keywords">中文</a>本框文本后触发;<br /> addEvent(textField,'select',function(){<br /> alert(this.value); // IE事件需要传递this才可以这么写;<br /> });</pre></p> </div> <div class="jb51code"> <pre class="brush:js;"> // 获得选择的文本 // Firefox提供了两个<a href="/tag/shuxing/" target="_blank" class="keywords">属性</a>:selectionStart和selectionEnd; addEvent(textField,function(){ alert(this.value.substring(this.selectionStart,this.selectionEnd)); }); // IE8以下,提供了另一个方案:selection对象,属于document; // 这个对象保存着<a href="/tag/yonghu/" target="_blank" class="keywords">用户</a>在整个文档范围内选择的文本信息; // 兼容<a href="/tag/hanshu/" target="_blank" class="keywords">函数</a> function getSelecText(text){ if(typeof text.selectioinStart =='number'){ // 非IE; return text.value.substring(text.selectionStart,text.selectionEnd); }else if(document.selection){ // IE; return document.selection.createRange().text; // <a href="/tag/huoqu/" target="_blank" class="keywords">获取</a>IE选择的文本; } } // PS:存在问题:IE在触发select事件的时候,在选择一个字符后立即触发,而其他浏览器是选择想要的字符后释放鼠标键时再触发; // 所以使用alert()的话,导致跨浏览器的不兼容; // 所以我们可以通过将得到的选择文本赋值给别的对象; addEvent(textField,function(){ // alert(getSelecText(this)); // 导致<a href="/tag/yonghu/" target="_blank" class="keywords">用户</a>行为结果不一致; document.getElementById('<a href="/tag/Box/" target="_blank" class="keywords">Box</a>').innerHTML = getSelecText(this); })</pre> </div> <p><h3>3.过滤输入</h3></p> <div class="jb51code"> <pre class="brush:js;"> // 为了使文本框输入指定的字符,我们必须对输入进文本框的字符进行验证; addEvent(areaField,'keypress',function(evt){ var e = evt || window.event; var charCode = getCharCode(evt); // 得到字符编码; if(!/\d/.test(String.formCharCode(charCode)) && charCode>9 && !e.ctrlKey){ preDef(evt); // 条件阻止默认; } }); // PS:前半段<a href="/tag/tiaojianpanduan/" target="_blank" class="keywords">条件判断</a>只有数字才可以输入,导致常规按键,比如光标键/退格键/<a href="/tag/shanchu/" target="_blank" class="keywords">删除</a>键等无法使用; // 部分浏览器比如Firefox,需要解放这些键,而非字符触发的编码均为0; // 在Safari3之前的浏览器,也会被阻止,而它对应的字符编码全部为8,所以最后<a href="/tag/jiashang/" target="_blank" class="keywords">加上</a>charCode>9的判断; // 确保<a href="/tag/yonghu/" target="_blank" class="keywords">用户</a>没有按下ctrl键;</pre> </div> <div class="jb51code"> <pre class="brush:js;"> // 阻止文本框裁剪/复制和粘贴; 事件名 说明 copy 在发生复制操作时触发; cut 在发生裁剪操作时触发; paste 在发生粘贴操作时触发; beforecopy 在发生复制操作时触发; beforecut 在发生裁剪操作时触发; beforepaste 在发生粘贴操作时触发; // 如果我们想要禁用裁剪/复制/粘贴,那么可以阻止默认行为即可; addEvent(areaField,'cut',function(evt){ preDef(evt); }); addEvent(areaField,'copy','paste',function(evt){ preDef(evt); }); <p>// 最后一个影响输入的因素,就是:输入法;<br /> // <a href="/tag/zhongwen/" target="_blank" class="keywords">中文</a>输入法,它的原理是在输入法面板上先储存文本,按下回车就写入英文文本,按下空格就写入<a href="/tag/zhongwen/" target="_blank" class="keywords">中文</a>文本;<br /> // <a href="/tag/jiejuefang/" target="_blank" class="keywords">解决方</a>案:通过CSS来<a href="/tag/jinzhi/" target="_blank" class="keywords">禁止</a>调出输入法;<br /> style='ime-mode:disabled'; // CSS直接编写;<br /> areaField.style.imeMode='disabled'; // 在JS中设置;<br /> // PS:Chrome无法<a href="/tag/jinzhi/" target="_blank" class="keywords">禁止</a>输入法调出,所以,最后使用正则验证已输入的文本;<br /> addEvent(areaField,'keyup',function(evt){<br /> this.value = this.value.replace(/[^\d]/g,''); // 把非数字都替换成空;<br /> });</pre></p> </div> <p><h3>4.<a href="/tag/zidong/" target="_blank" class="keywords">自动</a>切换焦点</h3></p> <div class="jb51code"> <pre class="brush:js;"> // 为了<a href="/tag/zengjia/" target="_blank" class="keywords">增加</a>表单字段的易用性,很多字段在满足一定条件时(比如长度),就会<a href="/tag/zidong/" target="_blank" class="keywords">自动</a>切换到下一个字段上继续填写; <input type='text' name='user1' maxlength='1'/> // 只能写1个; <input type='text' name='user2' maxlength='2'/> <input type='text' name='user3' maxlength='3'/> function tabForward(evt){ var e = evt || window.event; var target = getTarget(evt); // 判断当前长度是否和指定长度一致; if(target.value.length == target.maxLength){ // 遍历所有字段; for(var i=0; i<fm.elements.length; i++){ // 找到当前字段; if(fm.elements[i]==target){ // 就把焦点移入下一个字段; if(fm.elements[i+1]){ fm.elements[i+1].focus(); } // 中途返回; return; } } } }</pre> </div> <p><h3>三 选择框脚本 </h3></p> <p>选择框是通过<select>和<option>元素创建的;</p> <p><h3>HTMLSelectElement对象</h3></p> <p><a href="/tag/shuxing/" target="_blank" class="keywords">属性</a>/<a href="/tag/fangfa/" target="_blank" class="keywords">方法</a> 说明 add(new,rel) 插入新元素,并指定位置; multiple 布尔值,是否允许多项选择; options <option>元素的HTMLCollection集合; remove(index) 移除给定位置的选项; selectedIndex 基于0的选中项的索引,如果没有选中项,则值为-1; size 选择框中可见的行数; </p> <p>// 在DOM中,每个<option>元素都有一个HTMLOptionElement对象,以便访问数据; <h3>HTMLOptionElement对象 </h3><a href="/tag/shuxing/" target="_blank" class="keywords">属性</a> 说明 index 当前选项在options集合中的索引; label 当前选项的<a href="/tag/biaoqian/" target="_blank" class="keywords">标签</a>; selected 布尔值,表示当前选项是否被选中; text 选项的文本; value 选项的值;</p> <div class="jb51code"> <pre class="brush:js;"> var city = fm.elements['city']; // HTMLSelectElement; alert(city.options); // HTMLOptionsCollection; alert(city.options[0]); // HTMLOptionElement; alert(city.type); // select-one; // PS:选择框里的type<a href="/tag/shuxing/" target="_blank" class="keywords">属性</a>有可能是:select-one,也有可能是:select-multiple; // 这取决于<a href="/tag/HTMLdaima/" target="_blank" class="keywords">HTML代码</a>中有没有multiple<a href="/tag/shuxing/" target="_blank" class="keywords">属性</a>; <p>alert(city.options[0].text); // 上海text,<a href="/tag/huoqu/" target="_blank" class="keywords">获取</a>text值;<br /> alert(city.options[0].value); // 上海value,<a href="/tag/huoqu/" target="_blank" class="keywords">获取</a>value值;<br /> // PS:操作select时,最好使用HTMLDOM,以为浏览器兼容性比较好;<br /> // 如果使用标准DOM,会因为不同的浏览器导致不同的结果;<br /> // PS:当选项没有value值的时候,IE会返回空字符串,其他浏览器会返回text值;</pre></p> </div> <p><h3>2.选择选项 </h3></p> <p>对于只能选择一项的选择框,使用selectedIndex<a href="/tag/shuxing/" target="_blank" class="keywords">属性</a>最为简单; <div class="codetitle"><span><a style="CURSOR: pointer" data="69399" class="copybut" id="copybut69399" onclick="doCopy('code69399')"><U></U></a> <a href="/tag/daima/" target="_blank" class="keywords">代码</a>如下:</div><div class="codebody" id="code69399"> addEvent(city,function(){ alert(this.selectedIndex); // 得到当前选项的索引,从0开始; alert(this.options[this.selectedIndex].text); // 得到当前选项的text值; alert(this.options[this.selectedIndex].value); // 得到当前选项的value值; }); city.selectedIndex = 1; // 设置selectedIndex可以定位某个索引; </div></p> <p>通过option的<a href="/tag/shuxing/" target="_blank" class="keywords">属性</a>selected(布尔值),也可以设置定位某个索引,设置为true即可; city.options[0].selected = true; // 设置第一个索引;</p> <p>selected和selectedIndex区别: 1.selected是返回的布尔值;所以一般用于判断上; 2.selectedIndex返回的是数值,一般用于设置和<a href="/tag/huoqu/" target="_blank" class="keywords">获取</a>;</p> <p><div class="codetitle"><span><a style="CURSOR: pointer" data="50836" class="copybut" id="copybut50836" onclick="doCopy('code50836')"><U></U></a> <a href="/tag/daima/" target="_blank" class="keywords">代码</a>如下:</div><div class="codebody" id="code50836"> addEvent(city,function(){ if(this.options[2].selected == true){ // 判断第三个选项是否被选定; alert('正确!'); } }); </div></p> <p><h3>3.<a href="/tag/tianjia/" target="_blank" class="keywords">添加</a>选项 </h3>// 如需要动态的<a href="/tag/tianjia/" target="_blank" class="keywords">添加</a>选项,我们提供两种方案:DOM和Option构造<a href="/tag/hanshu/" target="_blank" class="keywords">函数</a>; (1).DOM var option = document.createElement('option'); option.appendChild(document.createTextNode('北京 text')); option.setAttribute('value','北京 value'); city.appendChild(option);</p> <p>(2).Option构造<a href="/tag/hanshu/" target="_blank" class="keywords">函数</a> var option = new Option('北京 text','北京 value'); city.appendChild(option); // IE出现bug;</p> <p>(3).使用add()<a href="/tag/fangfa/" target="_blank" class="keywords">方法</a>来<a href="/tag/tianjia/" target="_blank" class="keywords">添加</a>选项: var option = new Option('北京 text','北京 value'); city.add(option,0); // 0,表示<a href="/tag/tianjia/" target="_blank" class="keywords">添加</a>到第一位; // PS:在DOM规定,add()中两个参数是必须的,如果不正确索引,那么第二个参数设置null即可,即默认移入最后一个选项; // 但在IE中第二个参数是可选的,所以设置null表示放入不存在的位置,导致失踪; // 为了兼容性,可以传递undefined即可兼容; city.add(option,null); // IE<a href="/tag/buxianshi/" target="_blank" class="keywords">不显示</a>了; city.add(option,undefined); // 兼容;</p> <p><h3>4.移除选项 </h3></p> <div class="jb51code"> <pre class="brush:js;"> // 有三种方式可以移除某一个选项:DOM移除/remove()<a href="/tag/fangfa/" target="_blank" class="keywords">方法</a>移除和null移除; city.removeChild(city.option[0]); // DOM移除; city.remove(0); // remove()移除,推荐; city.options[0] = null; // null移除; // PS:当第一项移除后,下面的项,往上移,所以不停的移除第一项,即可全部移除;</pre> </div> <p><h3>5.移动选项 </h3></p> <div class="jb51code"> <pre class="brush:js;"> // 如果有两个选择框,把第一个选择框里的第一个选项移到第二个选择框里,并且第一个选择框里的第一项被移除; var city = fm.elements['city']; // 第一个选择框; var info = fm.elements['info']; // 第二个选择框; info.appendChild(city.options[0]); // 移动,并在第一个选择框中<a href="/tag/shanchu/" target="_blank" class="keywords">删除</a>; </pre> </div> <p><h3>6.排列选项 </h3></p> <p>选择框提供了一个index<a href="/tag/shuxing/" target="_blank" class="keywords">属性</a>,可以得到当前选项的索引值,和selectedIndex的区别是,一个是选择框对象的<a href="/tag/diaoyong/" target="_blank" class="keywords">调用</a>,一个是选项对象的<a href="/tag/diaoyong/" target="_blank" class="keywords">调用</a>;</p> <p><div class="codetitle"><span><a style="CURSOR: pointer" data="33083" class="copybut" id="copybut33083" onclick="doCopy('code33083')"><U></U></a> <a href="/tag/daima/" target="_blank" class="keywords">代码</a>如下:</div><div class="codebody" id="code33083"> var option1 = city.options[1]; city.insertBefore(option1,city.options[option1.index-1]); // 往上移位; </div></p> <p><h3>7.单选按钮</h3></p> <div class="jb51code"> <pre class="brush:js;"> // 通过checked<a href="/tag/shuxing/" target="_blank" class="keywords">属性</a>来<a href="/tag/huoqu/" target="_blank" class="keywords">获取</a>单选按钮的值; for(var i=0; i<fm.sex.length; i++){ // 循环单选按钮; if(fm.sex[i].checked == true){ // 遍历每一个,找出处于选中状态的那一个; alert(fm.sex[i].value); // 得到值; } } // PS:除了checked<a href="/tag/shuxing/" target="_blank" class="keywords">属性</a>之外,单选按钮还有一个defaultChecked按钮,// 它<a href="/tag/huoqu/" target="_blank" class="keywords">获取</a>的是原本的checked按钮对象,而不会因为checked的改变而改变; if(fm.sex[i].defaultChecked == true){ alert(fm.sex[i].value); }</pre> </div> <p><h3>8.复选按钮 </h3></p> <div class="jb51code"> <pre class="brush:js;"> // 通过checked<a href="/tag/shuxing/" target="_blank" class="keywords">属性</a>来<a href="/tag/huoqu/" target="_blank" class="keywords">获取</a>复选按钮的值,var love = ''; for(var i=0; i<fm.love.length; i++){ if(fm.love[i].checked == true){ love += fm.love[i].value; } } alert(love);</pre> </div></div> <div class="topcard-tags"><a href="/tag/biaodanchuli/" class="tag_link" target="_blank">表单处理</a></div> <ul class="list-group"> <li class="list-group-item"><a href="/js/54811.html" title="JavaScript 事件绑定及深入">上一篇:JavaScript 事件绑定及深入</a><a href="/js/54809.html" title="JavaScript字符串常用类使用方法汇总" class="text-muted pull-right">下一篇:JavaScript字符串常用类使用方法汇</a> </li> </ul> </div> </div> </div> <!-- row end --> <div class="row row-sm"> <div class="col-sm-12 col-md-12 col-lg-12"> <div class="card"> <ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-4605373693034661" data-ad-slot="9144498553"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script></div> </div> </div> <div class="row row-sm"> <div class="col-sm-12 col-md-12 col-lg-12"> <div class="card"> <div class="title"><h1>猜你在找的JavaScript相关文章</h1></div> <div class="list_con"> <a href="/js/997747.html" title="Javascript中的事件冒泡与捕获"><div class="title">Javascript中的事件冒泡与捕获</div> <div class="summary">事件冒泡和事件捕获 起因:今天在封装一个bind函数的时候,发现el.addEventListener函数支...</div> <time class="summary">作者:前端之家 时间:2021-02-22</time> </a> </div> <div class="list_con"> <a href="/js/997746.html" title="搞懂js中小数运算精度问题原因及解决办法"><img class="lazy" src="/images/np.jpg" data-original="/res/2021/02-22/19/e40e1eb184cb2a5d8c5f6c5e730d8e82.png" title="" width="160" height="90" style="float:right;margin-left:30px;display:none;" /><div class="title">搞懂js中小数运算精度问题原因及解决办法</div> <div class="summary">js小数运算会出现精度问题 js number类型 JS 数字类型只有number类型,number类型相当于其...</div> <time class="summary">作者:前端之家 时间:2021-02-22</time> </a> </div> <div class="list_con"> <a href="/js/997744.html" title="搞懂:前端跨域问题JS解决跨域问题VUE代理解决跨域问题原理"><div class="title">搞懂:前端跨域问题JS解决跨域问题VUE代理解决跨域问题原理</div> <div class="summary">什么是跨域 跨域 : 广义的跨域包含一下内容 : 1.资源跳转(链接跳转,重定向跳转,表单提...</div> <time class="summary">作者:前端之家 时间:2021-02-22</time> </a> </div> <div class="list_con"> <a href="/js/997743.html" title="前端对base64编码的理解,原生js实现字符base64编码"><div class="title">前端对base64编码的理解,原生js实现字符base64编码</div> <div class="summary">@ "TOC" 常见对base64的认知(不完全正确) 首先对base64常见的认知,也是...</div> <time class="summary">作者:前端之家 时间:2021-02-22</time> </a> </div> <div class="list_con"> <a href="/js/997742.html" title="搞懂:MVVM模型以及VUE中的数据绑定数据劫持发布订阅模式"><div class="title">搞懂:MVVM模型以及VUE中的数据绑定数据劫持发布订阅模式</div> <div class="summary">搞懂:MVVM模式和Vue中的MVVM模式 MVVM MVVM : 的缩写,说都能直接说出来 :模型, :视图...</div> <time class="summary">作者:前端之家 时间:2021-02-22</time> </a> </div> <div style="border-bottom: 1px solid #f4f4f4;margin-top:20px;"> <ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="-fr-2o+fp-dx-wx" data-ad-client="ca-pub-4605373693034661" data-ad-slot="4561116489"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div><div class="list_con"> <a href="/js/997318.html" title="js判断浏览器是否支持webGL"><div class="title">js判断浏览器是否支持webGL</div> <div class="summary">起因是我之前开发的网页,用到了three.js制作了一个3d的旋转球体效果。 在各种浏览器上运行...</div> <time class="summary">作者:前端之家 时间:2021-02-14</time> </a> </div> <div class="list_con"> <a href="/js/997317.html" title="js判断undefined和null"><div class="title">js判断undefined和null</div> <div class="summary">js判断undefined js判断null js判断null和undefined</div> <time class="summary">作者:前端之家 时间:2021-02-14</time> </a> </div> <div class="list_con"> <a href="/js/997316.html" title="将文字自动转为banner打印形式的工具"><div class="title">将文字自动转为banner打印形式的工具</div> <div class="summary">http://patorjk.com/software/taag/</div> <time class="summary">作者:前端之家 时间:2021-02-14</time> </a> </div> <div class="list_con"> <a href="/js/997315.html" title="聊一聊 bootstrap 的轮播图插件"><div class="title">聊一聊 bootstrap 的轮播图插件</div> <div class="summary">今天做工作的时候,轻车熟路的做完,又用到了bootstrap的轮播图,觉得有必要安利一下这个插...</div> <time class="summary">作者:前端之家 时间:2021-02-14</time> </a> </div> <div class="list_con"> <a href="/js/997314.html" title="js实现图片无缝循环跑马灯"><div class="title">js实现图片无缝循环跑马灯</div> <div class="summary">html 代码 css js代码 function mylsRunHorseLight() { if (mylsTimer != null) { clearIn...</div> <time class="summary">作者:前端之家 时间:2021-02-14</time> </a> </div> <div style="border-bottom: 1px solid #f4f4f4;margin-top:20px;"> <ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="-fr-2o+fp-dx-wx" data-ad-client="ca-pub-4605373693034661" data-ad-slot="4561116489"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div></div> </div> </div> </div> <!-- left end--> <!-- right --> <div class="col-sm-12 col-md-12 col-lg-3"> <!-- row --> <div class="row row-sm"> <div class="col-sm-12 col-md-12 col-lg-12"> <div class="card"> <label class="main-content-label ">编程分类</label> <div class="cate mt-20"><a href="/html/" title="HTML">HTML</a><a href="/html5/" title="HTML5">HTML5</a><a href="/js/" title="JavaScript">JavaScript</a><a href="/css/" title="CSS">CSS</a><a href="/jquery/" title="jQuery">jQuery</a><a href="/bootstrap/" title="Bootstrap">Bootstrap</a><a href="/angularjs/" title="Angularjs">Angularjs</a><a href="/typescript/" title="TypeScript">TypeScript</a><a href="/vue/" title="Vue">Vue</a><a href="/dojo/" title="Dojo">Dojo</a><a href="/json/" title="Json">Json</a><a href="/electron/" title="Electron">Electron</a><a href="/nodejs/" title="Node.js">Node.js</a><a href="/extjs/" title="extjs">extjs</a><a href="/express/" title="Express ">Express </a><a href="/xml/" title="XML">XML</a><a href="/es6/" title="ES6">ES6</a><a href="/ajax/" title="Ajax">Ajax</a><a href="/flash/" title="Flash">Flash</a><a href="/unity/" title="Unity">Unity</a><a href="/react/" title="React">React</a><a href="/flex/" title="Flex">Flex</a><a href="/antdesign/" title="Ant Design">Ant Design</a><a href="/webfrontend/" title="Web前端">Web前端</a><a href="/weapp/" title="微信小程序">微信小程序</a><a href="/wxmp/" title="微信公众号">微信公众号</a><div class="clearfix"></div> </div> </div> </div> </div> <!-- row end --> <!-- row --> <div class="row row-sm"> <div class="col-sm-12 col-md-12 col-lg-12"> <div class="card"> <!-- f2er-rightads --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-4605373693034661" data-ad-slot="7756441254" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </div> </div> <!-- row end --> <!-- row --> <div class="row row-sm"> <div class="col-sm-12 col-md-12 col-lg-12"> <div class="card"> <label class="main-content-label ">最新文章</label> <ul class="n-list"><li><a href="/js/997747.html" title="Javascript中的事件冒泡与捕获" target="_blank">• Javascript中的事件冒泡与</a></li> <li><a href="/js/997746.html" title="搞懂js中小数运算精度问题原因及解决办法" target="_blank">• 搞懂js中小数运算精度问题</a></li> <li><a href="/js/997744.html" title="搞懂:前端跨域问题JS解决跨域问题VUE代理解决跨域问题原理" target="_blank">• 搞懂:前端跨域问题JS解决</a></li> <li><a href="/js/997743.html" title="前端对base64编码的理解,原生js实现字符base64编码" target="_blank">• 前端对base64编码的理解,</a></li> <li><a href="/js/997742.html" title="搞懂:MVVM模型以及VUE中的数据绑定数据劫持发布订阅模式" target="_blank">• 搞懂:MVVM模型以及VUE中的</a></li> <li><a href="/js/997493.html" title="js实现横向跑马灯效果" target="_blank">• js实现横向跑马灯效果</a></li> <li><a href="/js/997318.html" title="js判断浏览器是否支持webGL" target="_blank">• js判断浏览器是否支持webG</a></li> <li><a href="/js/997317.html" title="js判断undefined和null" target="_blank">• js判断undefined和null</a></li> <li><a href="/js/997316.html" title="将文字自动转为banner打印形式的工具" target="_blank">• 将文字自动转为banner打印</a></li> <li><a href="/js/997315.html" title="聊一聊 bootstrap 的轮播图插件" target="_blank">• 聊一聊 bootstrap 的轮播图</a></li> </ul> </div> </div> </div> <!-- row end --> <!-- row --> <div class="row row-sm"> <div class="col-sm-12 col-md-12 col-lg-12"> <div class="card"> <label class="main-content-label ">热门标签 <span class="pull-right tx-12"> <a href="/all" target="_blank">更多 ►</a></span> </label> <div class="topcard-tags"><a href="/tag/guanbiyangao/" title="关闭广告" target="_blank">关闭广告</a><a href="/tag/danduheaders/" title="单独headers" target="_blank">单独headers</a><a href="/tag/fengzhuangdaima/" title="封装代码" target="_blank">封装代码</a><a href="/tag/tishicuowu/" title="提示错误" target="_blank">提示错误</a><a href="/tag/zhengshuzhengze/" title="整数正则" target="_blank">整数正则</a><a href="/tag/fei0kaitou/" title="非0开头" target="_blank">非0开头</a><a href="/tag/tiaoye/" title="跳页" target="_blank">跳页</a><a href="/tag/chuyema/" title="出页码" target="_blank">出页码</a><a href="/tag/antdtable/" title="antd table" target="_blank">antd table</a><a href="/tag/tishiURLweizhuce/" title="提示URL未注册" target="_blank">提示URL未注册</a><a href="/tag/gongzhonghaozhifu/" title="公众号支付" target="_blank">公众号支付</a><a href="/tag/vuehashmoshi/" title="vue hash模式" target="_blank">vue hash模式</a><a href="/tag/iSlider/" title="iSlider" target="_blank">iSlider</a><a href="/tag/chepaijianpan/" title="车牌键盘" target="_blank">车牌键盘</a><a href="/tag/xunhuantupian/" title="循环图片" target="_blank">循环图片</a><a href="/tag/echartsshuangzhexian/" title="echarts 双折线" target="_blank">echarts 双折</a><a href="/tag/zuoyoubuju/" title="左右布局" target="_blank">左右布局</a><a href="/tag/DllPlugin/" title="DllPlugin" target="_blank">DllPlugin</a><a href="/tag/duixiangchuangjian/" title="对象创建" target="_blank">对象创建</a><a href="/tag/daziyouxi/" title="打字游戏" target="_blank">打字游戏</a><a href="/tag/quanxuan/" title="圈选" target="_blank">圈选</a><a href="/tag/lianglan/" title="两栏" target="_blank">两栏</a><a href="/tag/yunhanshu/" title="云函数" target="_blank">云函数</a><a href="/tag/mengban/" title="蒙版" target="_blank">蒙版</a><a href="/tag/ES2020/" title="ES2020" target="_blank">ES2020</a><a href="/tag/chuchuang/" title="橱窗" target="_blank">橱窗</a><a href="/tag/wufenggundonglunbo/" title="无缝滚动轮播" target="_blank">无缝滚动轮播</a><a href="/tag/sekuaipengzhuang/" title="色块碰撞" target="_blank">色块碰撞</a><a href="/tag/zujianxiaohui/" title="组件销毁" target="_blank">组件销毁</a><a href="/tag/wendangcaozuo/" title="文档操作" target="_blank">文档操作</a></div> </div> </div> </div> <!-- row end --> <!-- row --> <div class="row row-sm"> <div class="col-sm-12 col-md-12 col-lg-12"> <div class="card"> <!-- f2er-rightads --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-4605373693034661" data-ad-slot="7756441254" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </div> </div> <!-- row end --> </div> <!-- right end --> </div> </div> <footer id="footer"> <div class="container"> <div class="row hidden-xs"> <dl class="col-sm-6 site-link"> <dt>最近更新</dt><dd><a href="/win11/1005328.html" title="小米手机重装系统价格多少?专业维修服务详解" target="_blank">· 小米手机重装系统价格多少?专业维修服务详解</a><span class="text-muted pull-right">02-05</span></dd> <dd><a href="/win11/1005327.html" title="手把手教你重装电脑系统,让你的电脑焕然一新!" target="_blank">· 手把手教你重装电脑系统,让你的电脑焕然一新!</a><span class="text-muted pull-right">02-05</span></dd> <dd><a href="/win11/1005326.html" title="教你一步步重装XP系统,让你的电脑重获新生" target="_blank">· 教你一步步重装XP系统,让你的电脑重获新生</a><span class="text-muted pull-right">02-05</span></dd> <dd><a href="/win11/1005325.html" title="从备份到上网:一步步教你重装电脑系统" target="_blank">· 从备份到上网:一步步教你重装电脑系统</a><span class="text-muted pull-right">02-05</span></dd> <dd><a href="/win11/1005324.html" title="Sony笔记本电脑一键重装系统详细图文教程" target="_blank">· Sony笔记本电脑一键重装系统详细图文教程</a><span class="text-muted pull-right">02-05</span></dd> <dd><a href="/win11/1005323.html" title="Lenovo笔记本重装系统超详细教程,小白也能轻松上手" target="_blank">· Lenovo笔记本重装系统超详细教程,小白也能轻松...</a><span class="text-muted pull-right">02-05</span></dd> <dd><a href="/win11/1005322.html" title="联想笔记本一键重装Win10系统详细教程" target="_blank">· 联想笔记本一键重装Win10系统详细教程</a><span class="text-muted pull-right">02-05</span></dd> <dd><a href="/win11/1005321.html" title="电脑系统故障无需愁,专业维修店帮你重装旧貌换新颜" target="_blank">· 电脑系统故障无需愁,专业维修店帮你重装旧貌换新...</a><span class="text-muted pull-right">02-05</span></dd> <dd><a href="/win11/1005320.html" title="联想笔记本一键重装Win10系统图文教程,小白也能轻松搞定!" target="_blank">· 联想笔记本一键重装Win10系统图文教程,小白也能...</a><span class="text-muted pull-right">02-05</span></dd> <dd><a href="/win11/1005319.html" title="笔记本重装系统图文教程:从光盘启动一步到位" target="_blank">· 笔记本重装系统图文教程:从光盘启动一步到位</a><span class="text-muted pull-right">02-05</span></dd> </dl> <dl class="col-sm-4 site-link"> <dt>好站推荐</dt><dd> <a href="https://www.runoob.com" title="菜鸟教程(www.runoob.com)提供了编程的基础技术教程, 介绍了HTML、CSS、Javascript、Python,Java,Ruby,C,PHP , MySQL等各种编程语言的基础知识。 同时本站中也提供了大量的在线实例,通过实例,您可以更好的学习编程。" target="_blank">菜鸟教程</a></dd><dd> <a href="https://www.jb51.cc" title="编程之家(www.jb51.cc)是成立于2017年面向全球中文开发者的技术内容分享平台。提供编程导航、编程问答、编程博文、编程百科、编程教程、编程工具、编程实例等开发者最需要的编程技术内容与开发工具支持,与你一起学习编程,相信编程改变未来!" target="_blank">编程之家</a></dd><dd> <a href="" title="前端之家 f2er.com 前端开发人员所需学习知识手册。" target="_blank">前端之家</a></dd></dl> <dl class="col-sm-2 site-link"> <dt>商务合作</dt> <dd><a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin=76874919&site=qq&menu=yes">联系我们</a></dd> </dl> </div> <div class="copyright"> Copyright © 2019 前端之家. 当前版本 V7.0.16<br> <span class="ml5">前端之家 版权所有 <a href="https://beian.miit.gov.cn/" target="_blank" rel="nofollow">闽ICP备13020303号-10</a></span> </div> </div> </footer> <script type="text/javascript" src="/js/base.js"></script> </body> </html>