js

js设置元素class方法小结及classList相关

佐手、 提交于 2020-02-28 12:19:30
给DOM元素设置class是我们在项目中非常容易遇到的,网上的资料和总结也比较多,下面比较全面的整理一下,希望给到大家一些帮助!并引用两种成熟的classList的兼容方法 一、el.setAttribute('class','abc'); var div = document.getElementById('d1'); div.setAttribute("class", "abc"); 兼容:IE8/9/10/Firefox/Safari/Chrome/Opera支持 IE6/7不支持setAttribute('class',xxx)方式设置元素的class。 二、el.setAttribute('className', 'abc') var div = document.getElementById('d1'); div.setAttribute("className", "abc"); 兼容:IE6/7支持 IE8/9/10/Firefox/Safari/Chrome/Opera不支持setAttribute('className',xxx)方式设置元素的class。 三、el.className = 'abc'; var div = document.getElementById('d1'); div.className = 'abc'; 兼容:所有浏览器都支持。 四

简单粗暴地理解js原型链--js面向对象编程

ぐ巨炮叔叔 提交于 2020-02-28 12:03:16
原型链理解起来有点绕了,网上资料也是很多,每次晚上睡不着的时候总喜欢在网上找点原型链和闭包的文章看,效果极好。 不要纠结于那一堆术语了,那除了让你脑筋拧成麻花,真的不能帮你什么。简单粗暴点看原型链吧,想点与代码无关的事,比如人、妖以及人妖。 1)人是人他妈生的,妖是妖他妈生的。人和妖都是对象实例,而人他妈和妖他妈就是原型。原型也是对象,叫原型对象。 2)人他妈和人他爸啪啪啪能生出一堆人宝宝、妖他妈和妖他爸啪啪啪能生出一堆妖宝宝,啪啪啪就是构造函数,俗称造人。 3)人他妈会记录啪啪啪的信息,所以可以通过人他妈找到啪啪啪的信息,也就是说能通过原型对象找到构造函数。 4)人他妈可以生很多宝宝,但这些宝宝只有一个妈妈,这就是原型的唯一性。 5)人他妈也是由人他妈他妈生的,通过人他妈找到人他妈他妈,再通过人他妈他妈找到人他妈他妈……,这个关系叫做原型链。 6)原型链并不是无限的,当你通过人他妈一直往上找,最后发现你会发现人他妈他妈他妈……的他妈都不是人,也就是原型链最终指向null。 7)人他妈生的人会有人的样子,妖他妈生的妖会有妖的丑陋,这叫继承。 8)你继承了你妈的肤色,你妈继承了你妈他妈的肤色,你妈他妈……,这就是原型链的继承。 9)你没有家,那你家指的就是你妈家;你妈也没有家,那你家指的就是你妈他妈家……这就是原型链的向上搜索。 10)你会继承你妈的样子,但是你也可以去染发洗剪吹

JS的预编译过程

谁都会走 提交于 2020-02-28 12:00:57
预编译发生在函数执行的前一刻 预编译(全局) 三部曲: ①、 生成GO对象 (Global Object) // GO === window GO{ } ②、 找形参和变量声明,将变量和形参名作为GO属性名,值为undefined ③、 在函数体里面找函数声明,值——赋予函数体 预编译(局部) 四部曲: ①、 生成AO对象 (Activation Object 执行期上下文)“作用域” AO{ } ②、 找形参和变量声明,将变量和形参名作为AO属性名,值为undefined ③、 将实参值和形参统一 ④、 在函数体里面找函数声明,值——赋予函数体 一、 imply global 暗示全局变量:即任何变量,如果变量未经声明就赋值,此变量就为全局对象所有。 二、 一切声明的全局变量,都归window所有 三、 window就是全局 四、 ①函数声明整体提升到逻辑最前面   ②变量声明提升到逻辑最前面 JS三部曲 1、 依法分析 2、 预编译 3、 解释执行 来源: https://www.cnblogs.com/zzq-229/p/9674763.html

Selenium 使用实例,爬取图片、浏览器截长图

南楼画角 提交于 2020-02-28 09:48:31
Selenium 使用实例,爬取图片、浏览器截长图 Selenium 使用实例 翻页爬取图片 滚动截取网页 Selenium 使用实例 翻页爬取图片 需要用到的模块 from selenium import webdriver #浏览器驱动 from selenium . webdriver . chrome . options import Options #设置 # 其他模块 import time import ssl import threading #多线程下载 import urllib . request #下载 import urllib . error #下载 携带配置、创建浏览器。 def browser_get ( ) : # 创建设置对象 chrome_options = Options ( ) # 向对象添加参数,手机模式。 chrome_options . add_experimental_option ( "mobileEmulation" , { "deviceName" : "Nexus 5" } ) # 向设置添加headless模式。 chrome_options . add_argument ( '--headless' ) # 设置驱动位置、传入设置对象 browser = webdriver . Chrome ( r 'F:\study

JS面向对象(1)——构造函数模式和原型模式

落爺英雄遲暮 提交于 2020-02-28 09:09:11
1、构造函数模式 构造函数用来创建特定的类型的对象。如下所示: function Person(name,age,job){   this.name=name;   this.job=job;   this.age=age;   this.sayName=function(){     alert(this.name);   }; } var person1=new Person('nick',20,'student');var person2=new Person('nick',20,'student');alert(person1.sayName==person2.sayName);//false 构造函数特点:不需要显示地创建对象,直接将属性和方法赋给this对象; 创建构造构造函数的实例,需要用new操作符,new操作符会创建一个新对象,而后将构造函数的作用域指向新的对象。 构造函数的缺点:上面的例子中,构造函数内的sayName()方法,也可以写为 this.sayName()=new Function("alert(this.name)") 可以看出来,每次创建一个Person的实例都会创建一个新的sayName实例,不同的实例,有不同的作用域链和标识符解析,因此 不同实例上的同名函数不相等! 对于这个缺点,我们可以考虑一下

学习js和jQuery总结

别说谁变了你拦得住时间么 提交于 2020-02-28 07:54:34
数据类型的转换: 1.字符串必须放在引号内 2.字符串的转换有两个标签,string和tostring这两个函数。 3.变量必须使用驼峰形式, 把一个变量转换成字符串:console.log(isChild.toString()); 类型转换 1.除0之外的所有数字,转换为布尔型都为true 2.除“”之外的所有字符,转换为布尔型都为true 3.null和undefined转换为布尔型为false var x=1; console.log(Boolean(x)); 把字符串强制转换成布尔类型了。 算数运算符: 什么是表达式: 将同类型的数据(如常量,变量,函数)用运算符号按一定的规则连接起来,有意义的十字称为表达式。 三元操作符: 语法:条件?执行代码1;执行代码2 说明:可代替简单的if语句,如果条件成立,执行代码1,否则执行代码2 var soce=85; var result=(soce>=60)?"及格":“不及格”; console.log(result); 逻辑操作符: &&与操作符:所有条件都为true返回的也是true,一个条件为false结果为false 如果第一个操作数隐士类型的转换后为true,则返回第二个操作数。 如果第一个操作数隐士类型的转换后为false,则返回第一个操作数结果。 ||或运算符只要有一个条件成立,就为true。 条件语句:; if

js函数对象

ε祈祈猫儿з 提交于 2020-02-28 07:07:10
函数是进行模块化程序设计的基础,编写复杂的Ajax应用程序,必须对函数有更深入的了解。   javascript中的函数不同于其他的语言,每个函数都是作为一个对象被维护和运行的。通过函数对象的性质,可以很方便的将一个函数赋值给一个变量或者将函数作为参数传递。在继续讲述之前,先看一下函数的使用语法: 以下是引用片段: function func1(…){…} var func2=function(…){…}; var func3=function func4(…){…}; var func5=new Function();   这些都是声明函数的正确语法。它们和其他语言中常见的函数或之前介绍的函数定义方式有着很大的区别。那么在JavaScript中为什么能这么写?它所遵循的语法是什么呢?下面将介绍这些内容。   认识函数对象(Function Object)   可以用function关键字定义一个函数,并为每个函数指定一个函数名,通过函数名来进行调用。在JavaScript解释执行时,函数都是被维护为一个对象,这就是要介绍的函数对象(Function Object)。   函数对象与其他用户所定义的对象有着本质的区别,这一类对象被称之为内部对象,例如日期对象(Date)、数组对象(Array)、字符串对象(String)都属于内部对象

JS节点操作

亡梦爱人 提交于 2020-02-28 07:02:24
<!DOCTYPE html> <html> <head> <title></title> <meta content="text/html;charset=utf-8" http-equiv="content-type"> <script> function computePrice(obj){ obj.value=obj.value.replace(/\D+/,""); //得到数量 var num=parseFloat(obj.value); var pTdObj=obj.parentNode.previousSibling;//得到当前元素的父节点的上一个兄弟节点 var nTdObj=obj.parentNode.nextSibling;//得到元素父节点的下一个兄弟节点 if(isNaN(num)){ num=1; }else{ nTdObj.innerHTML=num * pTdObj.innerHTML; } } function del(obj){ var trObj=obj.parentNode.parentNode; trObj.parentNode.removeChild(trObj); } window.onload=function(){ var likes=document.getElementsByName("like");/

前端总结·基础篇·JS(四)异步请求及跨域方案

旧城冷巷雨未停 提交于 2020-02-28 04:55:27
前端总结系列 前端总结·基础篇·CSS(一)布局 前端总结·基础篇·CSS(二)视觉 前端总结·基础篇·CSS(三)补充 前端总结·基础篇·JS(一)原型、原型链、构造函数和字符串(String) 前端总结·基础篇·JS(二)数组深拷贝、去重以及字符串反序和数组(Array) 前端总结·基础篇·JS(三)arguments、callee、call、apply、bind及函数封装和构造函数 前端总结·基础篇·JS(四)异步请求及跨域方案 前端总结·工具篇·管理(一)常用模块化方案 目录 一、异步请求 1.1 XHR(XMLHttpRequest) 1.2 Promise(ES6) 1.3 Fetch 二、跨域方案 2.1 JSONP(JavaScript Object Notation with Padding) 2.2 CORS(Cross-origin resource sharing) 一、异步请求 此文只进行简单的介绍,完整的用例请见我的 Github 。Github上的用例,对这三种方法的POST和GET请求都进行了封装。 Github演示不支持POST请求,所以会有部分报错。完整测试可以放在本机的localhost下。 a.json ------------- { "user":"张三", "folling":30, "foller": 20 } 1.1 XHR

JS实现:获取客户端网卡MAC地址和IP地址

空扰寡人 提交于 2020-02-28 03:18:23
在做B/S结构的系统时,我们常常需要获取客户端的一些信息,如IP和MAC,以结合身份验证。要获取服务器端的MAC很容易,但是要获取客户端的MAC的地址确要花费一翻心思,通常的做法是调用Win32API或直接调用nbtstat命令,这样做有很多问题,而另一种方法就是直接用客户端脚本,我们这里用Javascript,这样做的好处是不需要服务器端进行处理,有客户端自行获取,传递到服务器端,且速度和可靠性都比在服务器端获取好。 具体实现的html和javascript如下: <HTML> <HEAD> <TITLE>WMI Scripting HTML</TITLE> <META http-equiv=Content-Type content="text/html; charset=gb2312"> <SCRIPT language=JScript event="OnCompleted(hResult,pErrorObject, pAsyncContext)" for=foo> document.forms[0].txtMACAddr.value=unescape(MACAddr); document.forms[0].txtIPAddr.value=unescape(IPAddr); document.forms[0].txtDNSName.value=unescape(sDNSName