js

记一次js操作cookie的坑!

无人久伴 提交于 2020-03-19 19:15:15
3 月,跳不动了?>>> 需求:在网站首页加了一个广告模态框,要求每天第一次访问时弹出,此后当天不再弹。 网站上线的当天晚上,大BOSS临时加的一个小需求,当时感觉没什么困难的,几分钟的事情,模态框和cookie操作都是封装好的工具方法,只要将广告图片加上,再存个弹出标识cookie,设置过期时间24小时就ok。然而,实际操作起来,效果却不理想。 我们项目用的是angularjs 1.3的框架,说这个问题之前,不得不提我做登录功能时,遇到的另一个cookie问题。当时操作cookie用的是$cookieStore。但是他好像不兼容IE8,当时用他来做登录功能时,发现页面不能跳转,一跳转页面cookie就会消失,在本页面即使刷新也能读取到cookie。 首先百度查了又查,有的说是IE8设置问题,有的说是用法问题,有的说是兼容问题,反正我都试了,最终只能归咎于兼容问题。同时可以肯定的,这应该是和cookie的作用域或是路径有关系,但是我又没法查看IE8下面cookie的详细信息,而$cookieStore又无法手动设置作用域和路径。这时,我想起以前用过用js封装过cookie工具方法,确定是可以兼容IE8的。于是我就直接拿过来用了,最后测试IE8,果然问题没了。此外我还多测了一下,利用js的方法,我不设置作用域,问题任然存在。 再次回到本问题,此次我用的仍是前面的用到的js方法

JS自定义data-*属性与jquery的data()方法的使用

拈花ヽ惹草 提交于 2020-03-19 13:03:39
3 月,跳不动了?>>> 人们总喜欢往HTML标签上添加自定义属性来存储和操作数据。但这样做的问题是,你不知道将来会不会有其它脚本把你的自定义属性给重置掉,此外,你这样做也会导致html语法上不符合Html规范,以及一些其它副作用。这就是为什么在HTML5规范里增加了一个自定义data属性,你可以拿它做很多有用的事情。 你可以去读一下HTML5的详细规范,但这个自定义data属性的用法非常的简单,就是你可以往HTML标签上添加任意以 "data-"开头的属性,这些属性页面上是不显示的,它不会影响到你的页面布局和风格,但它却是可读可写的。 下面的一个代码片段是一个有效的HTML5标记: 复制代码 代码如下: <div id="awesome" data-myid="3e4ae6c4e">Some awesome data</div> 可是,怎么来读取这些数据呢?你当然可以遍历页面元素来读取你想要的属性,但jquery已经内置了方法来操作这些属性。使用jQuery的.data()方法来访问这些"data-*" 属性。其中一个方法就是 .data(obj),这个方法是在 jQuery1.4.3版本后出现的,它能返回相应的data属性。 举个例子,你可以用下面的写法读取 data-myid属性值: 复制代码 代码如下: var myid= jQuery("#awesome").data(

js操作select option

ⅰ亾dé卋堺 提交于 2020-03-19 13:02:12
1、获取选中select的value和text,html代码如下: <select id="mySelect"> <option value="1">one</option> <option value="2">two</option> <option value="3">three</option></select> 则可通过以下script代码s来获取选中的value和text $("#mySelect").val(); //获取选中记录的value值 $("#mySelect option:selected").text(); //获取选中记录的text值 2、运用new Option("文本","值")方法添加选项option var obj = document.getElementById("mySelect");obj.add(new Option("4","4")); 3、删除所有选项option var obj = document.getElementById("mySelect");obj.options.length = 0; 4、删除选中选项option var obj = document.getElementById("mySelect");var index = obj.selectedIndex;obj.options.remove(index);

js判断是否为手机或是pc

╄→尐↘猪︶ㄣ 提交于 2020-03-19 12:04:01
$(function(){ var mobile_flag = isMobile(); // true为PC端,false为手机端 if(mobile_flag){ $("#fh5co-main").css({"width": "100%", "float": "right"}); $("#trademark").css({"margin-left": "48px","margin-top": "16px"}); } console.log(mobile_flag); }); function isMobile() { var userAgentInfo = navigator.userAgent; var mobileAgents = [ "Android", "iPhone", "SymbianOS", "Windows Phone", "iPad","iPod"]; var mobile_flag = false; //根据userAgent判断是否是手机 for (var v = 0; v < mobileAgents.length; v++) { if (userAgentInfo.indexOf(mobileAgents[v]) > 0) { mobile_flag = true; break; } } var screen_width = window.screen

五月份和六月份的总结

不问归期 提交于 2020-03-19 09:56:01
好像五月份和六月份很忙呀,忙的居然总结都忘写了。五月份好像忙着玩了,六月份去了一趟西安,看了兵马俑和壶口瀑布。 不写总结总感觉少了些什么。今天是年中,7月第一天,来北京的时间过了一半,还有一半的时间。生活,学习,工作中要写总结,做笔记,记账,这些都是很好的习惯。因为现在越到好多问题都感觉之前碰到过的,但是很多都无从下手或者重新做一遍工作量比较大。所以从今天起,多做笔记把。 记得六月初的时候,javascript高级程序设计 看完了,但是当时却感觉毫无思路,遇到问题依然无从下手。所以又重新开始看,现在感觉比之前好多了。好像六月份主要就在看js的东西。 五月份好像看了好几本书了,《编写高质量代码-web前端开发修炼之道》,不错的一本书,看了里面css部分。js部分想等以后在看。《精通css-高级web标准解决方案》这也是一本不错的书,现在看css的书已经非常快了。而且也感觉稍有入门,也能够举一反三。希望js水平也早日达到这个境界。 7月份开始主要是看js和php。js的话是继续看那本红皮书。php的话以自己网站为项目来实践,当然也有js,包括ajax的内容。php包括数据库的操作,smarty模板的操作,已经那本php圣经。js的话看完书后做一些例子,写一些插件,库之类的。当然还要去研究一写js的库,包括jquery和 MooTools(公司用的这个库)。

js中的window.onload和jquery中的load区别

爱⌒轻易说出口 提交于 2020-03-19 08:02:37
JavaScript 中的以下代码 : Window.onload = function (){ // 代码 } 等价于 Jquery 代码如下: $(window).load( function (){ // 代码 }); window.load $(document).ready() 执行时机 必须等待网页中所有的内容加载完毕后 ( 包括图片 ) 才能执行 网页中所有 DOM 结构绘制完毕后就执行,可以能 DOM 元素关联的内容并没有加载完 编写个数 不能同时编写多个 以下代码无法正确执行: window.onload = function(){ alert(“text1”); }; window.onload = function(){ alert(“text2”); }; 结果只输出第二个 能同时编写多个 以下代码正确执行: $(document).ready(function(){ alert(“Hello World”); }); $(document).ready(function(){ alert(“Hello again”); }); 结果两次都输出 简化写法 无 $(function(){ // do something }); 以 浏览器装载文档为例,在页面加载完毕后,浏览器会通过 Javascript 为 DOM 元素添加事件。在常规的 Javascript

js array对象

最后都变了- 提交于 2020-03-18 22:11:22
js array对象 Array 数组对象 数组对象是一个对象的集合,里边的对象可以是不同类型的。数组的每一个成员对象都有一个“下标”,用来表示它在数组中的位置,是从零开始的 数组定义的方法: 1. 定义了一个空数组: var 数组名= new Array(); 2. 定义时指定有n个空元素的数组: var 数组名 =new Array(n); 3.定义数组的时候,直接初始化数据: var 数组名 = [<元素1>, <元素2>, <元素3>...]; 我们定义myArray数组,并赋值, 代码如下: var myArray = [2, 8, 6]; 说明: 定义了一个数组 myArray,里边的元素是:myArray[0] = 2; myArray[1] = 8; myArray[2] = 6。 数组元素使用: 数组名[下标] = 值; 注意: 数组的下标用方括号括起来,从0开始。 数组属性: length 用法:<数组对象>.length;返回:数组的长度,即数组里有多少个元素。它等于数组里最后一个元素的下标加一。 数组方法: 数组连接concat() concat() 方法用于连接两个或多个数组。此方法返回一个新数组,不改变原来的数组。 语法 arrayObject.concat(array1,array2,...,arrayN) 参数说明: 注意: 该方法不会改变现有的数组

JS内置对象

假如想象 提交于 2020-03-18 21:58:27
1.什么是对象 JavaScript 中的所有事物都是对象,如:字符串、数值、数组、函数等,每个对象带有 属性 和 方法 。 对象的属性: 反映该对象某些特定的性质的,如:字符串的长度、图像的长宽等; 对象的方法: 能够在对象上执行的动作。例如,表单的“提交”(Submit),时间的“获取”(getYear)等; JavaScript 提供多个内建对象,比如 String、Date、Array 等等,使用对象前先定义,如下使用数组对象: var objectName =new Array();//使用new关键字定义对象 或者 var objectName =[]; 访问对象属性的语法: objectName.propertyName 如使用 Array 对象的 length 属性来获得数组的长度: var myarray=new Array(6);//定义数组对象 var myl=myarray.length;//访问数组长度length属性 以上代码执行后,myl的值将是:6 访问对象的方法: objectName.methodName() 如使用string 对象的 toUpperCase() 方法来将文本转换为大写: var mystr="Hello world!";//创建一个字符串 var request=mystr.toUpperCase(); //使用字符串对象方法

JQuery数字类型验证正则表达式

只愿长相守 提交于 2020-03-18 19:50:13
有朋友整了一些关于js与jquery的数字类型验证正则表达式代码,下面我给大家再整理一下。 这里包括了数字验证实现与测试实例了,大家可参考。 js验证数字正则表达式 代码如下: //检测是否为数字和小写字母 function istrue(a){ var reg=/^(([a-z]+[0-9]+)|([0-9]+[a-z]+))[a-z0-9]*$/i; return reg.test(a); } //检测变量是否为数字或数字字符串 function isNumeric(a) { var reg=/^(-|+)?d+(.d+)?$/; return (reg.test(a)); } //检查是否为正数 function isUnsignedNumeric(a) { var reg=/^d+(.d+)?$/; alert reg.test(a); } //检查是否为整数 function isInteger(a) { var reg=/^(-|+)?d+$/; return reg.test(a); } //检查是否为正整数 function isUnsignedInteger(a) { var reg =/^d+$/; return reg.test(a); } //检查是否数字 function isNum(a) { var reg = /^d+(.d+)?$/; return

js获得用户网络状况API

 ̄綄美尐妖づ 提交于 2020-03-18 17:29:02
js获得用户网络状况API 这是一个实验中的功能, 目前还有许多浏览器不兼容此功能某些浏览器尚在开发中 1. 网络类型 effectiveType : 可以得到2g,3g,4g connectionInfo = navigator.connection返回一个只读对象:返回网络连接状态NetworkInformation对象,包括.downlink(网络下行速度) effectiveType(网络类型) onchange(有值代表网络状态变更) rtt(估算的往返时间) saveData(打开/请求数据保护模式) 2. 判断网络 connection.type: 网络状态 API 可以获取到系统的网络连接信息,比如说连接方式是 WiFi 还是蜂窝。 var connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection; var type = connection.type; function updateConnectionStatus() { console.log("设备的网络连接从" + type + "变成了" + connection.type); } connection.addEventListener('change',