最近整理一下之前做的一个项目,把滚动条动态固定顶部的代码整理出来和大家分享,上代码<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>js滚动到指定位置导航栏固定顶部</title> <style type="text/css"> body{height: 2500px; margin: 0; padding: 0;} .banner{height: 250px; width: 100%; background: #e5e5e5;} .bignav{width: 100%; background: #000;} .nav{ background:#000; width: 1200px; margin: 0 auto; height: 45px;} .nav a{display: block; width: 200px;float: left; color: #fff; text-decoration: none; text-align: center; line-height: 45px;} </style> </head> <body> <div class="banner"> </div> <div class="bignav" id="bignav"> <div class="nav"> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >首页</a> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >首页</a> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >首页</a> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >首页</a> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >首页</a> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >首页</a> </div> </div> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <p>其他内容</p> <script type="text/javascript"> window.onscroll=function(){ var topScroll =document.body.scrollTop;//滚动的距离,距离顶部的距离 var bignav = document.getElementById("bignav");//获取到导航栏id if(topScroll > 250){ //当滚动距离大于250px时执行下面的东西 bignav.style.position = 'fixed'; bignav.style.top = '0'; bignav.style.zIndex = '9999'; }else{//当滚动距离小于250的时候执行下面的内容,也就是让导航栏恢复原状 bignav.style.position = 'static'; } } </script> </body></html>以上所述是小编给大家介绍的JS滚动到指定位置导航栏固定顶部,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

在 事件模块的演变 我使用了dispatchEvent(标准) 和fireEvent(IE)来主动触发事件。如下 复制代码 代码如下: ... dispatch = w3c ? function(el, type){ try{ var evt = document.createEvent('Event'); evt.initEvent(type,true,true); el.dispatchEvent(evt); }catch(e){alert(e)}; } : function(el, type){ try{ el.fireEvent('on'+type); }catch(e){alert(e)} }; ... jQuery则完全没有用到dispatchEvent/fireEvent方法。它采用的是另外一种机制。 jQuery触发事件的核心方法是jQuery.event.trigger。它提供给客户端程序员使用的触发事件方法有两个:.trigger/.triggerHandler 一个事件的发生在某些元素中可能会导致两种动作,一个是默认行为,一个是事件handler。如链接A <a href="http://mail.sina.com.cn" onclick="alert(1);">新浪邮箱</a> 点击后,弹出1(事件handler),点确定跳转(默认行为)到了mail.sina.com.cn。因此,设计的触发事件的函数要考虑到这两种情况。 jQuery使用.trigger和.triggerHandler区分了这两种情况: .trigger 执行事件hanlder/执行冒泡/执行默认行为 .triggerHandler 执行事件handler/不冒泡/不执行默认行为 复制代码 代码如下: .trigger/.triggerHandler的源码如下 trigger: function( type, data ) { return this.each(function() { jQuery.event.trigger( type, data, this ); }); }, triggerHandler: function( type, data ) { if ( this[0] ) { return jQuery.event.trigger( type, data, this[0], true ); } }, 可以看出,两者都调用jQuery.event.trigger。调用时一个没有传true,一个传了。传了true的triggerHander就表示仅执行事件handler。 此外还需注意一点区别:.trigger是对jQuery对象集合的操作,而.triggerHandler仅操作jQuery对象的第一个元素。如下 复制代码 代码如下: <p>p1</p> <p>p1</p> <p>p1</p> <script> $('p').click(function(){alert(1)}); $('p').trigger('click'); // 弹3次,即三个p的click都触发了 $('p').triggerHandler('click'); // 仅弹1次,即只触发第一个p的click </script> 好了,是时候贴出jQuery.event.trigger的代码了 复制代码 代码如下: trigger: function( event, data, elem, onlyHandlers ) { // Event object or event type var type = event.type || event, namespaces = [], exclusive; ...... } 这就是jQuery.event.trigger的定义,省略了大部分。下面一一列举 复制代码 代码如下: if ( type.indexOf("!") >= 0 ) { // Exclusive events trigger only for the exact event (no namespaces) type = type.slice(0, -1); exclusive = true; } 这一段是为了处理.trigger('click!')的情形,即触发非命名空间的事件。变量exclusive挂在事件对象上后在jQuery.event.handle内使用。举个例子 复制代码 代码如下: function fn1() { console.log(1) } function fn2() { console.log(2) } $(document).bind('click.a', fn1); $(document).bind('click', fn2); $(document).trigger('click!'); // 2 为document添加了两个点击事件,一个是具有命名空间的"click.a",一个则没有"click"。使用trigger时参数click后加个叹号"!"。从输出结果为2可以看出不触发命名空间的事件。总结一下: .trigger('click') 触发所有的点击事件 .trigger('click.a') 仅触发“click.a” 的点击事件 .trigger('click!') 触发非命名空间的点击事件 接着看 复制代码 代码如下: if ( type.indexOf(".") >= 0 ) { // Namespaced trigger; create a regexp to match event type in handle() namespaces = type.split("."); type = namespaces.shift(); namespaces.sort(); } 这段就很好理解了,就是对.trigger('click.a')的处理,即对具有命名空间事件的处理。 接着看 复制代码 代码如下: if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { // No jQuery handlers for this event type, and it can't have inline handlers return; } 对于一些特殊事件如"getData"或对于已经触发过的事件直接返回。 往下 复制代码 代码如下: event = typeof event === "object" ? // jQuery.Event object event[ jQuery.expando ] ? event : // Object literal new jQuery.Event( type, event ) : // Just the event type (string) new jQuery.Event( type ); 有三种情况 ,event 本身就是jQuery.Event类的实例 ,event是个普通js对象(非jQuery.Event类的实例) ,event是个字符串,如"click" 续 event.type = type; event.exclusive = exclusive; event.namespace = namespaces.join("."); event.namespace_re = new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)"); 需要注意exclusive/namespace/namespace_re挂到了event上了,在jQuery.event.handle中可以用到(事件命名空间)。 往下是 复制代码 代码如下: // triggerHandler() and global events don't bubble or run the default action if ( onlyHandlers || !elem ) { event.preventDefault(); event.stopPropagation(); } onlyHandlers 只在 .triggerHandler用到了,即不触发元素的默认行为,且停止冒泡。 下面是 复制代码 代码如下: // Handle a global trigger if ( !elem ) { // TODO: Stop taunting the data cache; remove global events and always attach to document jQuery.each( jQuery.cache, function() { // internalKey variable is just used to make it easier to find // and potentially change this stuff later; currently it just // points to jQuery.expando var internalKey = jQuery.expando, internalCache = this[ internalKey ]; if ( internalCache && internalCache.events && internalCache.events[ type ] ) { jQuery.event.trigger( event, data, internalCache.handle.elem ); } }); return; } 这里是个递归调用。如果没有传elem元素,那么从jQuery.cache里取。 接着是 复制代码 代码如下: // Don't do events on text and comment nodes if ( elem.nodeType === 3 || elem.nodeType === 8 ) { return; } 属性,文本节点直接返回。 下面是 复制代码 代码如下: // Clone any incoming data and prepend the event, creating the handler arg list data = data != null ? jQuery.makeArray( data ) : []; data.unshift( event ); 先将参数data放入数组,event对象放在数组的第一个位置。 接着是 复制代码 代码如下: // Fire event on the current element, then bubble up the DOM tree do { var handle = jQuery._data( cur, "handle" ); event.currentTarget = cur; if ( handle ) { handle.apply( cur, data ); } // Trigger an inline bound script if ( ontype && jQuery.acceptData( cur ) && cur[ ontype ] && cur[ ontype ].apply( cur, data ) === false ) { event.result = false; event.preventDefault(); } // Bubble up to document, then to window cur = cur.parentNode || cur.ownerDocument || cur === event.target.ownerDocument && window; } while ( cur && !event.isPropagationStopped() ); 这段代码很重要,做了以下事情 ,取handle ,执行 ,执行通过onXXX方式添加的事件(如onclick="fun()") ,取父元素 while循环不断重复这四步以模拟事件冒泡。直到window对象。 接下是 复制代码 代码如下: // If nobody prevented the default action, do it now if ( !event.isDefaultPrevented() ) { var old, special = jQuery.event.special[ type ] || {}; if ( (!special._default || special._default.call( elem.ownerDocument, event ) === false) && !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { // Call a native DOM method on the target with the same name name as the event. // Can't use an .isFunction)() check here because IE6/7 fails that test. // IE<9 dies on focus to hidden element (#1486), may want to revisit a try/catch. try { if ( ontype && elem[ type ] ) { // Don't re-trigger an onFOO event when we call its FOO() method old = elem[ ontype ]; if ( old ) { elem[ ontype ] = null; } jQuery.event.triggered = type; elem[ type ](); } } catch ( ieError ) {} if ( old ) { elem[ ontype ] = old; } jQuery.event.triggered = undefined; } } 这一段是对于浏览器默认行为的触发。如form.submit(),button.click()等。 注意,由于Firefox中链接的安全性限制,jQuery对链接的默认行为都统一为不能触发。即不能通过.trigger()使链接跳转。

本文实例讲述了JS实现静态页面搜索并高亮显示功能。分享给大家供大家参考,具体如下:<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JS搜索</title></head><body><input id="key-word" class="key-word" value="请输入搜索内容" /><button id="search-button">搜索</button><div id="content" ><p>这是主体内容,有很多内容,很多很多啊啊啊……,比如1234abcd啊啊啊啊</p><p>这是主体内容,有很多内容,很多很多啊啊啊……,比如1234abcd啊啊啊啊</p><p>这是主体内容,有很多内容,很多很多啊啊啊……,比如1234abcd啊啊啊啊</p><p>这是主体内容,有很多内容,很多很多啊啊啊……,比如1234abcd啊啊< d d>啊啊</p></div><script>function $(id){return document.getElementById(id)}var putWordsObj = $('key-word');putWordsObj.onfocus = function(){if(this.value == '请输入搜索内容')this.value='';}putWordsObj.onblur = function(){if(!this.value)this.value='请输入搜索内容';}//search$('search-button').onclick = function(){var content = $('content').innerHTML;var keyWord = $('key-word').value;content = search_do(content, keyWord);$('content').innerHTML = content;//alert(content)}function search_do(content,keyWord){var keyWordArr = keyWord.replace(/[\s]+/g,' ').split(' ');var re;for(var n = 0; n < keyWordArr.length; n ++) {//re = new RegExp(">[\s\S]*?"+keyWordArr[n]+"[\s\S]*?<\S","gmi");re = new RegExp(""+keyWordArr[n]+"","gmi");content = content.replace(re,'<span style="color:#0f0;background-color:#ff0">'+keyWordArr[n]+'</span>');}return content;}</script></body></html>运行效果如下:更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript数据结构与算法技巧总结》、《JavaScript数学运算用法总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结》希望本文所述对大家JavaScript程序设计有所帮助。

在实际开发中,免不了要操作mysql,mongodb,redis等数据存储服务器。这里先简单介绍如何操作redis。一个例子关于redis服务端的安装这里不再介绍,重点不在这里。感兴趣的可以自行安装。对于一个新的模块,我们需要在我们的项目中先安装redis模块才能用。命令cnpm install redis新建一个redis.js的文件,代码如下://引入redisvar redis = require("redis");//创建redis客户端var client = redis.createClient("6379", "127.0.0.1");//连接错误处理client.on("error", function (error) { console.log(error);});//redis验证 (如果redis没有开启验证,此配置可以不写)client.auth("123456");//查找client.select("15", function (error) { if (error) { console.log(error); } else { client.set("node_redis_key", JSON.stringify({ "name": "wolfy", age: 28 }), function (error, res) { if (error) { console.log(error); } else { console.log(res); }; //操作完成,关闭redis连接 client.end(true); }); };});查询总结操作redis的这里只列举添加和查询的,其他的可以自己进行尝试,方法类似。

整理自慕课笔记 在网站中,网页总是需要和用户一起做沟通与交流。特别是当用户操作上下文为用户提供一些有效的警示框,比如说告诉用户操作成功、操作错误、提示或者警告等。如下图所示: 在Bootstrap框架有一个独立的组件,实现上述的效果,这个组件被称为警示框。默认警示框Bootstrap框架通过“alert“样式来实现警示框效果。在默认情况之下,提供了四种不同的警示框效果: 1、成功警示框:告诉用用户操作成功,在“alert”样式基础上追加“alert-success”样式,具体呈现的是背景、边框和文本都是绿色; 2、信息警示框:给用户提供提示信息,在“alert”样式基础上追加“alert-info”样式,具体呈现的是背景、边框和文本都是浅蓝色; 3、警告警示框:提示用户小心操作(提供警告信息),在“alert”样式基础上追加“alert-warning”样式,具体呈现的是背景、边框、文本都是浅黄色; 4、错误警示框:提示用户操作错误,在“alert”样式基础上追加“alert-danger”样式,具体呈现的是背景、边框和文本都是浅红色。 如下图示: 具体使用的时候,可以在类名为“alert”的div容器里放置提示信息。实现不同类型警示框,只需要在“alert”基础上追加对应的类名,如下:<div class="alert alert-success" role="alert">恭喜您操作成功!</div><div class="alert alert-info" role="alert">请输入正确的密码</div><div class="alert alert-warning" role="alert">您已操作失败两次,还有最后一次机会</div><div class="alert alert-danger" role="alert">对不起,您输入的密码有误</div>可关闭的警示框大家在平时浏览网页的时候,会发现一些警示框带有关闭按钮,用户一点击关闭按钮就能自动关闭显示的警示框(也就是让警示框隐藏不显示)。在Bootstrap框架中的警示框也具有这样的功能。 使用方法: 只需要在默认的警示框里面添加一个关闭按钮。然后进行三个步骤: 1、需要在基本警示框“alert”的基础上添加“alert-dismissable”样式。 2、在button标签中加入class=”close”类,实现警示框关闭按钮的样式。 3、要确保关闭按钮元素上设置了自定义属性:“data-dismiss=”alert””(因为可关闭警示框需要借助于Javascript来检测该属性,从而控制警示框的关闭)。 具体使用如下:<div class="alert alert-success alert-dismissable" role="alert"> <button class="close" type="button" data-dismiss="alert">×</button> 恭喜您操作成功!</div>警示框的链接有时候你可能想在警示框中加入链接地址,用来告诉用户跳到某一个地方或新的页面。而这个时候你又想让用户能明显的看出来这是链接地址。在Bootstrap框架中对警示框里的链接样式做了一个高亮显示处理。为不同类型的警示框内的链接进行了加粗处理,并且颜色相应加深。 实现方法: Bootstrap框架是通过给警示框加的链接添加一个名为“alert-link”的类名,通过“alert-link”样式给链接提供高亮显示。 具体使用如下:<div class="alert alert-success" role="alert"> <strong>Well done!</strong> You successfully read <a href="#" class="alert-link">this important alert message</a> .</div><div class="alert alert-info" role="alert"> <strong>Heads up!</strong> This <a href="#" class="alert-link">alert needs your attention</a> , but it's not super important.</div><div class="alert alert-warning" role="alert"> <strong>Warning!</strong> Better check yourself, you're <a href="#" class="alert-link">not looking too good</a> .</div><div class="alert alert-danger" role="alert"> <strong>Oh snap!</strong> <a href="#" class="alert-link">Change a few things up</a> and try submitting again.</div>以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

分类:腾博会官方网

时间:2016-07-03 13:29:04