fetch
|
|
学习是苦根上长出来的甜果
注:有时候网页采集器中的url获取不到真实数据,就不能抓到数据。
搜索字符=>属性名=>手气不错
就可以抓到数据,有时候要多试几次。
生成区间数=>选择区间(也就是页数)
合并多列=>填写输出列的名称=>Format 填写utl(0)。
从爬虫转换=>一般不用 填爬虫选择
写入数据表=>给数据定义名字
数据库操作
导出=>串行模式/并行模式。
Node.parentNode,Node.childNodes,Node.firstChild,Node.lastNode.
Node.previousSibling,Node.nextSibling.
添加 Node.appendChild()
删除 Node.removeChild()
复制 Node.clone(boolean) =>true 深度克隆 false 只克隆标签
创建 document.createElement()
选择 =>document.getElementById(),getElementsByClassName(),getElementsByTagName(),querySelector
1.性能:getElement(s)By…的性能要比querySelector快很多。
2.querySelector选择出来的是静态的,getElement选出来的是动态的=>比如动态生成的元素可以用querySelector给每一个该对象生成方法。(新建文件夹)
elem.className
elem.classList=>add(class),remove(class),contains(class),item(index),toggle(class,boolean)。
dom批量操作要用createDocumentFragment()
|
|
也可以
总结:innerHTML与createDocumentFragment 都比createElement和append占优势,少量数据时innerHTml最优,多数据或者改数据createDocumentFragment最优
但是innerHTML还有两个缺点:
1.如果你在原来的子元素上绑定了事件的话,重写后事件绑定仍然还在
2.js代码和html代码耦合程度高,不利于维护
当前代码的运行环境或者作用域
js中代码的运行环境分为以下三种:
全局级别的代码-这个是默认的代码运行环境,一旦代码被载入,引擎最先进入的就是这个环境。
函数级别的代码-当执行一个函数时,运行函数体中的代码
Eval的代码-在Eval函数内运行的代码。
在浏览器中,js引擎的工作方式是单线程的。也就是说,某一时刻只有唯一的一个事件是被激活处理的,其他的事件被放入队列中,等待被处理。
eg:
由此可见 ,对于执行上下文这个抽象的概念,可以归纳为以下几点:
单线程
同步执行
唯一的一个全局上下文
函数的执行上下文的个数没有限制
每次某个函数被调用,就会有个新的执行上下文为其创建,即使是调用的自身函数,也是如此。
我们现在已经知道,每当调用一个函数时,一个新的执行上下文就会被创建出来。然而,在javascript引擎内部,这个上下文的创建过程具体分为两个阶段:
建立阶段(发生在当调用一个函数时,但是在执行函数体内的具体代码以前)
建立变量,函数,arguments对象,参数
建立作用域链
确定this的值
代码执行阶段:
变量赋值,函数引用,执行其它代码
|
|
建立阶段
执行阶段
我们看到,只有在代码执行阶段,变量属性才会被赋予具体的值。
在函数中声明的变量以及函数,其作用域提升到函数顶部
eg: