js

js 递归总结

泪湿孤枕 提交于 2020-03-17 06:06:37
1.根据子id 递归查找所有父级 id 主要用于 vue element 中 Cascader 级联选择器展示 在编辑中回显默认展示 tree 数据 var arr = [{ "label": "文件夹", "parentId": null, "id": "0", "children": [{ "label": "文件夹1", "parentId": "0", "id": "1", "children": [{ "label": "文件夹1-1", "parentId": "1", "id": "1.1", "children": null }, { "label": "文件夹1-2", "parentId": "1", "id": "1.2", "children": null }, { "label": "文件夹1-3", "parentId": "1", "id": "1.3", "children": [{ "label": "文件夹1-3-1", "parentId": "1.3", "id": "1.3.1", "children": [{ "label": "文件夹1-3-1-1", "parentId": "1.3.1", "id": "1.3.1.1", "children": null }] }, { "label": "文件夹1-3-2", "parentId

js数据类型之NaN

梦想与她 提交于 2020-03-17 05:48:16
js中的基本数据类型 js中的基本数据类型分为以下五种:undefined、Number、null、String和NaN五种。在这里我就讲一下NaN。 NaN:not a number 不是一个数值(表示存储的数据类型) 举个例子: var a = '手机' - 100;console.log(a); 执行程序后我们会在控制台看到a的数据类型是NaN;(因为一个字符串减去一个数值结果肯定不是数值,就是NaN) NaN不等于NaN 在说完NaN是什么之后,理解NaN不等于NaN应该也很好理解了,因为执行结果是NaN的东西太多了,举个例子: var a = '手机'- 200; var b = '电脑'- 500; console.log('a:'+ a); console.log('b:' + b); console.log('a == b:' + (a == b)); console.log('a === b:' + (a === b)); 代码执行结果: 这里a和b的执行结果都是NaN,但是a是’手机’- 200; b是 ‘电脑’- 500; 他们两个的内容不同,所以他们不相等,更不可能全等了。 我们还可以在举个例子: var c = NaN ; var d = NaN ; console . log ( 'c:' + c ) ; console . log ( 'd:' + d

JS在页面上创建元素

拜拜、爱过 提交于 2020-03-17 05:42:33
创建元素 1. document.write 不常用,使用后会覆盖原本的页面内容 document . write ( "<h1>我是标题</h1>" ) ; //添加的内容 覆盖原理: 默认情况下,页面加载会形成一个文档流,当页面所有内容加载完毕之后,这个文档流(默认的文档流)就会关闭, 当触发某个事件,调用document.write向页面添加内容的时候,就会形成新的文档流,就会覆盖原本的页面内容 不覆盖的情况:默认文档流里没有关闭 覆盖的情况:默认文档流已经关闭,形成了新的文档流 2. innerHTML 也不常用 console . log ( document . body . innerHTML ) ; document . body . innerHTML += "<h1>我是标题</h1>" 3. document.createElement(“标签名”) 特点: (1)默认创建的是空标签 (2)创建值存在于内存中,需要手动添加到页面上 添加步骤: a.创建一个空标签 var h1 = document . createElement ( "h1" ) ; b.设置标签属性 h1 . innerText = "我是标题" c.添加到页面上 document . body . appendChild ( h1 ) ; 性能比较:

js (this,call,apply)(

别来无恙 提交于 2020-03-17 04:31:57
转自 http://blog.sina.com.cn/s/blog_68cb8c790100ytl5.html 对于我这种初学者来说this指的到底是哪里,实在头疼,再有了前面关于变量和作用域的概念后,今天我觉定学习关于this的用法,把这个烦人的家伙解决掉! (一)关于this 首先关于this我想说一句话,这句话记住了this的用法你也就差不多都能明白了: this指的是当前函数的对象 。这句话可能比较绕,我会举出很多例子和这句话 呼应 的!(看下文) 1.首先看下面这段代码, 定义一个函数,弹下this, function doSomething(){ alert(this); } doSomething(); 我是在firefox里面调试的,所以返回的结果是[Object Window]。 那么这个 [Object Window], 到底是什么呢?看看下面的代码 function doSomething(){ alert(this===window); } doSomething(); 看到弹出了true, 也就是说在这种正常情况下,this其实就是window 所以,我们定义了一个全局的变量的时候,可以 var test="Tony"; 也可以 window["test"]="Tony"; 下面这个例子,进一步说明,正常情况下,函数里的this就是window var

js call apply

这一生的挚爱 提交于 2020-03-17 04:31:27
1、方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象。 说明: call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。 如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。 apply方法: 语法:apply([thisObj[,argArray]]) 定义:应用某一对象的一个方法,用另一个对象替换当前对象。 说明: 如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。 如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。 2、常用实例 a、 Java代码 function add(a,b) { alert(a+b); } function sub(a,b) { alert(a-b); } add.call(sub,3,1); 这个例子中的意思就是用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4); // 注意:js

JS 打开本地应用软件

喜夏-厌秋 提交于 2020-03-17 04:21:40
我们有遇到可以直接打开QQ的跳转链接,也有遇到过直接启动office打开文档。 具体是如何操作的呢? 添加注册表项 首先需要在注册表中添加应用软件的启动地址,操作方式如下 在HKEY_CLASSES_ROOT下,新建JiraUserQuestion及其子节点: 然后,在JiraUserQuestion中,添加URL Protocol = "C:\Program Files (x86)\JiraUserQuestion\JiraUserQuestion.exe"。 - 这里是定义Protocol,后续通过protocol的检测协议,能访问应用地本地路径 在下方节点,command项中添加默认项。可以通过传入参数,启动应用 Js添加访问应用链接 添加前端demo: 1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title>Custom Protocol Demo</title> 6 </head> 7 <body> 8 <h1>Click:</h1> 9 <a href="JiraUserQuestion://Open">Open JiraUserQuestion</a> 10 <script src="protocolcheck.js"></script> 11 </body> 12

jQuery 入门

烈酒焚心 提交于 2020-03-17 02:43:09
不能正常引用jQuery-2.2.4.min.js所以代码没生效 jQuery 是一个 JavaScript 函数库。jQuery 库包含以下特性: HTML 元素选取 HTML 元素操作 CSS 操作 HTML 事件函数 JavaScript 特效和动画 HTML DOM 遍历和修改 AJAX Utilities 官网: 点击 中文文档: 点击 书写规范 <script src="https://code.jquery.com/jquery-2.2.4.min.js"></script> //代码不能写在引用文件这个容器里 <script> $somecode //$符号就表示jQuery jQuery.somecode //等同 </script> PS:由于编辑器的JS编码问题中文在js编码过程中没有使用utf-8.显示乱码.实际代码和注释源码有区别 选择器和筛选器 类似JS有#id(id选择器),element(元素选择器即标签),class(class选择器),组合选择器(selector多种选择器组合),层级选择器,*(选择全部)... 基本选择器 在js基础上稍微修改了一下,是用#代表id, .class代表class,标签直接使用标签名 PS:id选择器,使用任何的元字符(如 !"#$%&'()*+,./:;<=>?@[]^`{|}~)作为名称的文本部分,

js精准计算

浪尽此生 提交于 2020-03-17 01:23:14
目录 js精准计算 js精准计算 var numA = 0.1; var numB = 0.2; alert( numA + numB ); 0.1 + 0.2 = 0.30000000000000004。 计算精度误差问题(和二进制相关)。 对于浮点数的四则运算,几乎所有的编程语言都会有类似精度误差的问题,只不过在 C++/C#/Java 这些语言中已经封装好了方法来避免精度的问题,而 JavaScript 是一门弱类型的语言,从设计思想上就没有对浮点数有个严格的数据类型,所以精度误差的问题就显得格外突出。 我们先把 0.1 和 0.2 转换成二进制看看: 0.1 => 0.0001 1001 1001 1001…(无限循环) 0.2 => 0.0011 0011 0011 0011…(无限循环) 双精度浮点数的小数部分最多支持 52 位,所以两者相加之后得到这么一串 0.0100110011001100110011001100110011001100110011001100 因浮点数小数位的限制而截断的二进制数字,这时候,我们再把它转换为十进制,就成了 0.30000000000000004。 如何解决呢? 首先将数乘以10的幂次方去掉小数位得到可以转化二进制的整数,计算之后再还原。 /** ** 除法函数,用来得到精确的除法结果 ** 说明

使Eclipse下支持编写HTML/JS/CSS/JSP页面的自动提示。

你离开我真会死。 提交于 2020-03-17 00:34:45
我们平时用eclipse开发jsp页面时智能提示效果不太理想,今天用了两个小时发现了eclipse也可以像Visual Studio 2008那样完全智能提示HTML/JS/CSS代码,使用eclipse自带的插件,无需另外安装插件,具体步骤如下 1.打开eclipse→Windows→Preferences→ Java →Editor→Content Assist 修改Auto Activation triggers for java的值为:zjava 点击apply按钮 如图: 2.继续打开 JavaScript →Editor→Content Assist 修改Auto Activation triggers for javaScript的值为:zjs 点击apply按钮 如图: 3.继续打开web→html Files→Editor→Content Assist 修改Prompt when these characters are inserted:的值为:zhtml 点击apply按钮 如图: 4.打开File→Export→Genral→Preferences→导出一文件到任意位置,然后用记事本打开此文件 ,Ctrl+F查找 zjava 然后将其值改为 .abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW 再查找 zjs

漂亮的JS日历控件

删除回忆录丶 提交于 2020-03-17 00:33:37
代码如下: <script> /* alin */ /* Email:caoailin111@sohu.com */ /* QQ:38062022 */ /* Creation date: 2004-6-13 */ var myC_x,myC_y; var myC_timeset=null,myC_timeset1=null; var divObj=null; var inputName; function myCalendar() //构建对象 { var myDate = new Date(); this.year = myDate.getFullYear(); this.month = myDate.getMonth()+1; this.date = myDate.getDate(); this.format="yyyy-mm-dd"; this.style = myStyle(1);  this.show = createCalendar; this.input = createInput; } function myStyle(num) //设置样式 { if(!num||isNaN(num)){alert('参数不对,采用默认样式!');num=1;}  var style = new Array(); style[1]=".week{background-color: