当前位置:   article > 正文

爬虫必备-JS之Dom操作大全

jsdom 爬虫

640?wx_fmt=png"Python学习开发",一个值得加星标640?wx_fmt=png的公众号。

640?wx_fmt=jpeg

文章来源:https://www.haorooms.com/post/js_shixian_jquery

有些公司手机网站开发不用第三方的jquery或者zeptio,直接用原生的javascript。原生javascript功能是蛮强大的,只不过部分属性不支持IE8以下浏览器。下面对jquery相关方法,如何用js来实现,做一些简单总结。同时熟练的操作Dom也是爬虫必备技能之一。

Add Class

  1. //JQUERY
  2. $(el).addClass(className);
  3. //js
  4. //谷歌浏览器,火狐浏览器,IE8+
  5. if (el.classList)
  6.   el.classList.add(className);
  7. else
  8.   el.className += ' ' + className;
  9. //谷歌浏览器,火狐浏览器,IE10+
  10. el.classList.add(className);

After

  1. //JQUERY
  2. $(el).after(htmlString);
  3. //js 谷歌浏览器,火狐浏览器,IE8+
  4. el.insertAdjacentHTML('afterend', htmlString);

Append

  1. //JQUERY
  2. $(parent).append(el);
  3. //js谷歌浏览器,火狐浏览器,IE8+
  4. parent.appendChild(el);

Before

  1. //JQUERY
  2. $(el).before(htmlString);
  3. //js谷歌浏览器,火狐浏览器,IE8+
  4. el.insertAdjacentHTML('beforebegin', htmlString);

Children

  1. //JQUERY
  2. $(el).children();
  3. //js
  4. //谷歌浏览器,火狐浏览器,IE8+
  5. var children = [];
  6. for (var i = el.children.length; i--;) {
  7.   // Skip comment nodes on IE8
  8.   if (el.children[i].nodeType != 8)
  9.     children.unshift(el.children[i]);
  10. }
  11. //谷歌浏览器,火狐浏览器,IE9+
  12. el.children

Clone

  1. //JQUERY
  2. $(el).clone();
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. el.cloneNode(true);

Contains

  1. //JQUERY
  2. $.contains(el, child);
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. el !== child && el.contains(child);

Contains Selector

  1. //JQUERY
  2. $(el).find(selector).length;
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. el.querySelector(selector) !== null

Each

  1. //JQUERY
  2. $(selector).each(function(i, el){
  3. });
  4. //js谷歌浏览器,火狐浏览器,IE8+
  5. function forEachElement(selector, fn) {
  6.   var elements = document.querySelectorAll(selector);
  7.   for (var i = 0; i < elements.length; i++)
  8.     fn(elements[i], i);
  9. }
  10. forEachElement(selector, function(el, i){
  11. });
  12. //js谷歌浏览器,火狐浏览器,IE9+
  13. var elements = document.querySelectorAll(selector);
  14. Array.prototype.forEach.call(elements, function(el, i){
  15. });

Empty

  1.     //JQUERY
  2.     $(el).empty();
  3.     //js谷歌浏览器,火狐浏览器,IE8+
  4.     while(el.firstChild)
  5.       el.removeChild(el.firstChild);
  6.    //js谷歌浏览器,火狐浏览器,IE9+
  7.     el.innerHTML = '';

过滤filter

  1. //JQUERY
  2. $(selector).filter(filterFn);
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. function filter(selector, filterFn) {
  5.   var elements = document.querySelectorAll(selector);
  6.   var out = [];
  7.   for (var i = elements.length; i--;) {
  8.     if (filterFn(elements[i]))
  9.       out.unshift(elements[i]);
  10.   }
  11.   return out;
  12. }
  13. filter(selector, filterFn);
  14. //谷歌浏览器,火狐浏览器,IE9+
  15. Array.prototype.filter.call(document.querySelectorAll(selector), filterFn);

查找子元素

  1. //JQUERY
  2. $(el).find(selector);
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. el.querySelectorAll(selector);

查找、选择器

  1. //JQUERY
  2. $('.my #awesome selector');
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. document.querySelectorAll('.my #awesome selector');

获取属性值attr

  1.     //JQUERY
  2.     $(el).attr('tabindex');
  3.    //谷歌浏览器,火狐浏览器,IE8+
  4.     el.getAttribute('tabindex');

获取Html内容

  1. //JQUERY
  2. $(el).html();
  3. //js
  4. el.innerHTML

获取CSS样式

  1. //JQUERY
  2. $(el).css(ruleName);
  3. //谷歌浏览器,火狐浏览器,IE9+
  4. getComputedStyle(el)[ruleName];

获取文本内容

  1. //JQUERY
  2. $(el).text();
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. el.textContent || el.innerText
  5. //谷歌浏览器,火狐浏览器,IE9+
  6. el.textContent

Has Class

  1. //JQUERY
  2. $(el).hasClass(className);
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. if (el.classList)
  5.   el.classList.contains(className);
  6. else
  7.   new RegExp('(^| )' + className + '( |$)''gi').test(el.className);
  8. //谷歌浏览器,火狐浏览器,IE10+
  9. el.classList.contains(className);

元素比较

  1. JQUERY
  2. $(el).is($(otherEl));
  3. //js
  4. el === otherEl

比较类名

  1. //JQUERY
  2. $(el).is('.my-class');
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. var matches = function(el, selector) {
  5.   var _matches = (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector);
  6.   if (_matches) {
  7.     return _matches.call(el, selector);
  8.   } else {
  9.     var nodes = el.parentNode.querySelectorAll(selector);
  10.     for (var i = nodes.length; i--;) {
  11.       if (nodes[i] === el)
  12.         return true;
  13.     }
  14.     return false;
  15.   }
  16. };
  17. matches(el, '.my-class');
  18. //谷歌浏览器,火狐浏览器,IE9+
  19. var matches = function(el, selector) {
  20.   return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector).call(el, selector);
  21. };
  22. matches(el, '.my-class');

Next

  1. //JQUERY
  2. $(el).next();
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. // nextSibling can include text nodes
  5. function nextElementSibling(el) {
  6.   do { el = el.nextSibling; } while ( el && el.nodeType !== 1 );
  7.   return el;
  8. }
  9. el.nextElementSibling || nextElementSibling(el);
  10. //谷歌浏览器,火狐浏览器,IE9+
  11. el.nextElementSibling

Offset

  1. //JQUERY
  2. $(el).offset();
  3. //js谷歌浏览器,火狐浏览器,IE8+
  4. var rect = el.getBoundingClientRect()
  5. {
  6.   top: rect.top + document.body.scrollTop,
  7.   left: rect.left + document.body.scrollLeft
  8. }

Outer Width

  1. //JQUERY
  2. $(el).outerWidth();
  3. //js
  4. el.offsetWidth

Parent

  1. //JQUERY
  2. $(el).parent();
  3. //js
  4. el.parentNode

Position

  1. //JQUERY
  2. $(el).position();
  3. //js
  4. {left: el.offsetLefttop: el.offsetTop}

Prev

  1. //JQUERY
  2. $(el).prev();
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. // prevSibling can include text nodes
  5. function previousElementSibling(el) {
  6.   do { el = el.previousSibling; } while ( el && el.nodeType !== 1 );
  7.   return el;
  8. }
  9. el.previousElementSibling || previousElementSibling(el);
  10. //谷歌浏览器,火狐浏览器,IE9+
  11. el.previousElementSibling

Remove

  1. //JQUERY
  2. $(el).remove();
  3. //js谷歌浏览器,火狐浏览器,IE8+
  4. el.parentNode.removeChild(el);

Remove Class

  1. //JQUERY
  2. $(el).removeClass(className);
  3. //js谷歌浏览器,火狐浏览器,IE8+
  4. if (el.classList)
  5.   el.classList.remove(className);
  6. else
  7.   el.className = el.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)''gi'), ' ');
  8. //谷歌浏览器,火狐浏览器,IE10+
  9. el.classList.remove(className);

Replace From Html

  1. //JQUERY
  2. $(el).replaceWith(string);
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. el.outerHTML = string;

Set Attributes

  1. //JQUERY
  2. $(el).attr('tabindex'3);
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. el.setAttribute('tabindex'3);

Set Html

  1. //JQUERY
  2. $(el).html(string);
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. el.innerHTML = string;

Set Style

  1. //JQUERY
  2. $(el).css('border-width''20px');
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. // Use a class if possible
  5. el.style.borderWidth = '20px';

Set Text

  1. //JQUERY
  2. $(el).text(string);
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. if (el.textContent !== undefined)
  5.   el.textContent = string;
  6. else
  7.   el.innerText = string;
  8. //谷歌浏览器,火狐浏览器,IE9+
  9. el.textContent = string;

Siblings

  1. //JQUERY
  2. $(el).siblings();
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. var siblings = Array.prototype.slice.call(el.parentNode.children);
  5. for (var i = siblings.length; i--;) {
  6.   if (siblings[i] === el) {
  7.     siblings.splice(i, 1);
  8.     break;
  9.   }
  10. }
  11. //谷歌浏览器,火狐浏览器,IE9+
  12. Array.prototype.filter.call(el.parentNode.childrenfunction(child){
  13.   return child !== el;
  14. });

Toggle Class

  1. //JQUERY
  2. $(el).toggleClass(className);
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. if (el.classList) {
  5.   el.classList.toggle(className);
  6. else {
  7.     var classes = el.className.split(' ');
  8.     var existingIndex = -1;
  9.     for (var i = classes.length; i--;) {
  10.       if (classes[i] === className)
  11.         existingIndex = i;
  12.     }
  13.     if (existingIndex >= 0)
  14.       classes.splice(existingIndex, 1);
  15.     else
  16.       classes.push(className);
  17.   el.className = classes.join(' ');
  18. }
  19. //谷歌浏览器,火狐浏览器,IE9+
  20. if (el.classList) {
  21.   el.classList.toggle(className);
  22. else {
  23.   var classes = el.className.split(' ');
  24.   var existingIndex = classes.indexOf(className);
  25.   if (existingIndex >= 0)
  26.     classes.splice(existingIndex, 1);
  27.   else
  28.     classes.push(className);
  29.   el.className = classes.join(' ');
  30. }
  31. //谷歌浏览器,火狐浏览器,IE10+
  32. el.classList.toggle(className);

事件

Off

  1. //JQUERY
  2. $(el).off(eventName, eventHandler);
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. function removeEventListener(el, eventName, handler) {
  5.   if (el.removeEventListener)
  6.     el.removeEventListener(eventName, handler);
  7.   else
  8.     el.detachEvent('on' + eventName, handler);
  9. }
  10. removeEventListener(el, eventName, handler);
  11. //谷歌浏览器,火狐浏览器,IE9+
  12. el.removeEventListener(eventName, eventHandler);

On

  1. //JQUERY
  2. $(el).on(eventName, eventHandler);
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. function addEventListener(el, eventName, handler) {
  5.   if (el.addEventListener) {
  6.     el.addEventListener(eventName, handler);
  7.   } else {
  8.     el.attachEvent('on' + eventName, function(){
  9.       handler.call(el);
  10.     });
  11.   }
  12. }
  13. addEventListener(el, eventName, handler);
  14. 谷歌浏览器,火狐浏览器,IE9+
  15. el.addEventListener(eventName, eventHandler);

Ready

  1. //JQUERY
  2. $(document).ready(function(){
  3. });
  4. //谷歌浏览器,火狐浏览器,IE8+
  5. function ready(fn) {
  6.   if (document.readyState != 'loading'){
  7.     fn();
  8.   } else if (document.addEventListener) {
  9.     document.addEventListener('DOMContentLoaded', fn);
  10.   } else {
  11.     document.attachEvent('onreadystatechange'function() {
  12.       if (document.readyState != 'loading')
  13.         fn();
  14.     });
  15.   }
  16. }
  17. //谷歌浏览器,火狐浏览器,IE9+
  18. function ready(fn) {
  19.   if (document.readyState != 'loading'){
  20.     fn();
  21.   } else {
  22.     document.addEventListener('DOMContentLoaded', fn);
  23.   }

指定事件触发

  1. //JQUERY
  2. $(el).trigger('my-event', {some'data'});
  3. //js谷歌浏览器,火狐浏览器,IE9+
  4. if (window.CustomEvent) {
  5.   var event = new CustomEvent('my-event', {detail: {some'data'}});
  6. else {
  7.   var event = document.createEvent('CustomEvent');
  8.   event.initCustomEvent('my-event'truetrue, {some'data'});
  9. }
  10. el.dispatchEvent(event);

Trigger Native

  1. //JQUERY
  2. $(el).trigger('change');
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. if (document.createEvent) {
  5.   var event = document.createEvent('HTMLEvents');
  6.   event.initEvent('change'truefalse);
  7.   el.dispatchEvent(event);
  8. else {
  9.   el.fireEvent('onchange');
  10. }
  11. //谷歌浏览器,火狐浏览器,IE9+
  12. // For a full list of event types: https://developer.mozilla.org/en-US/docs/Web/API/document.createEvent
  13. var event = document.createEvent('HTMLEvents');
  14. event.initEvent('change'truefalse);
  15. el.dispatchEvent(event);

技巧

Array Each

  1. //JQUERY
  2. $.each(array, function(i, item){
  3. });
  4. 谷歌浏览器,火狐浏览器,IE8+
  5. function forEach(array, fn) {
  6.   for (i = 0; i < array.length; i++)
  7.     fn(array[i], i);
  8. }
  9. forEach(array, function(item, i){
  10. });
  11. //谷歌浏览器,火狐浏览器,IE9+
  12. array.forEach(function(item, i){
  13. });

深度扩展

  1. //JQUERY
  2. $.extend(true, {}, objA, objB);
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. var deepExtend = function(out) {
  5.   out = out || {};
  6.   for (var i = 1; i < arguments.length; i++) {
  7.     var obj = arguments[i];
  8.     if (!obj)
  9.       continue;
  10.     for (var key in obj) {
  11.       if (obj.hasOwnProperty(key)) {
  12.         if (typeof obj[key] === 'object')
  13.           deepExtend(out[key], obj[key]);
  14.         else
  15.           out[key] = obj[key];
  16.       }
  17.     }
  18.   }
  19.   return out;
  20. };
  21. deepExtend({}, objA, objB);

proxy

  1. //JQUERY
  2. $.proxy(fn, context);
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. fn.apply(context, arguments);
  5. //谷歌浏览器,火狐浏览器,IE9+
  6. fn.bind(context);

bind

  1. //jQuery
  2. $.extend({}, objA, objB);
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. var extend = function(out) {
  5.   out = out || {};
  6.   for (var i = 1; i < arguments.length; i++) {
  7.     if (!arguments[i])
  8.       continue;
  9.     for (var key in arguments[i]) {
  10.       if (arguments[i].hasOwnProperty(key))
  11.         out[key] = arguments[i][key];
  12.     }
  13.   }
  14.   return out;
  15. };
  16. extend({}, objA, objB);

Index Of

  1. //JQUERY
  2. $.inArray(item, array);
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. function indexOf(array, item) {
  5.   for (var i = 0; i < array.length; i++) {
  6.     if (array[i] === item)
  7.       return i;
  8.   }
  9.   return -1;
  10. }
  11. indexOf(array, item);
  12. 谷歌浏览器,火狐浏览器,IE9+
  13. array.indexOf(item);

Is Array

  1. //JQUERY
  2. $.isArray(arr);
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. isArray = Array.isArray || function(arr) {
  5.   return Object.prototype.toString.call(arr) == '[object Array]';
  6. }
  7. isArray(arr);
  8. //谷歌浏览器,火狐浏览器,IE9+
  9. Array.isArray(arr);

Map

  1. //JQUERY
  2. $.map(array, function(value, index){
  3. });
  4. //js谷歌浏览器,火狐浏览器,IE8+
  5. function map(arr, fn) {
  6.   var results = [];
  7.   for (var i = 0; i < arr.length; i++)
  8.     results.push(fn(arr[i], i));
  9.   return results;
  10. }
  11. map(array, function(value, index){
  12. });
  13. //谷歌浏览器,火狐浏览器,IE9+
  14. array.map(function(value, index){
  15. });

Now

  1. //JQUERY
  2. $.now();
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. new Date().getTime();
  5. //谷歌浏览器,火狐浏览器,IE9+
  6. Date.now();

Parse Html

  1. //JQUERY
  2. $.parseHTML(htmlString);
  3. 谷歌浏览器,火狐浏览器,IE8+
  4. var parseHTML = function(str) {
  5.   var el = document.createElement('div');
  6.   el.innerHTML = str;
  7.   return el.children;
  8. };
  9. parseHTML(htmlString);
  10. 谷歌浏览器,火狐浏览器,IE9+
  11. var parseHTML = function(str) {
  12.   var tmp = document.implementation.createHTMLDocument();
  13.   tmp.body.innerHTML = str;
  14.   return tmp.body.children;
  15. };
  16. parseHTML(htmlString);

解析 Json

  1. //JQUERY
  2. $.parseJSON(string);
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. JSON.parse(string);

Trim

  1. //JQUERY
  2. $.trim(string);
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. string.replace(/^\s+|\s+$/g'');
  5. //谷歌浏览器,火狐浏览器,IE9+
  6. string.trim();

Type

  1. //JQUERY
  2. $.type(obj);
  3. 谷歌浏览器,火狐浏览器,IE8+
  4. Object.prototype.toString.call(obj)
  5.                 .replace(/^\[object (.+)\]$/"$1")
  6.                 .toLowerCase();

ajax

新AJAX方法fetch()

基本Fetch用法

让我们先用一个例子来比较一下使用 XMLHttpRequest 和使用 fetch 之间的不同。我们要请求一个URL,获取JSON格式的返回结果。

原来的XMLHttpRequest

一个 XMLHttpRequest 请求需要两个监听器来捕捉 success 和 error 两种情形,而且需要调用 open() 和 send() 方法。

  1. function reqListener() {  
  2.   var data = JSON.parse(this.responseText);  
  3.   console.log(data);  
  4. }
  5. function reqError(err) {  
  6.   console.log('Fetch Error :-S', err);  
  7. }
  8. var oReq = new XMLHttpRequest();  
  9. oReq.onload = reqListener;  
  10. oReq.onerror = reqError;  
  11. oReq.open('get''./api/some.json'true);  
  12. oReq.send();

Fetch方法:

我们的 fetch 请求的代码基本上是这样的:

  1. fetch('./api/some.json')  
  2.   .then(  
  3.     function(response) {  
  4.       if (response.status !== 200) {  
  5.         console.log('Looks like there was a problem. Status Code: ' +  
  6.           response.status);  
  7.         return;  
  8.       }
  9.       // Examine the text in the response  
  10.       response.json().then(function(data) {  
  11.         console.log(data);  
  12.       });  
  13.     }  
  14.   )  
  15.   .catch(function(err) {  
  16.     console.log('Fetch Error :-S', err);  
  17.   });

用fetch执行表单数据提交

在WEB应用中,提交表单是非常常见的操作,用fetch来提交表单数据也是非常简洁。

fetch里提供了 method 和 body 参数选项。

  1. fetch(url, {  
  2.     method'post',  
  3.     headers: {  
  4.       "Content-type""application/x-www-form-urlencoded; charset=UTF-8"  
  5.     },  
  6.     body'foo=bar&lorem=ipsum'  
  7.   })
  8.   .then(json)  
  9.   .then(function (data) {  
  10.     console.log('Request succeeded with JSON response', data);  
  11.   })  
  12.   .catch(function (error) {  
  13.     console.log('Request failed', error);  
  14.   });

在Fetch请求里发送用户身份凭证信息

如果你想在fetch请求里附带cookies之类的凭证信息,可以将 credentials 参数设置成 “include” 值。

  1. fetch(url, {  
  2.   credentials'include'  
  3. })

JSON

  1.     //JQUERY
  2.     $.getJSON('/my/url'function(data) {
  3.     });
  4. //谷歌浏览器,火狐浏览器,IE8+
  5. var request = new XMLHttpRequest();
  6. request.open('GET''/my/url'true);
  7. request.onreadystatechange = function() {
  8.   if (this.readyState === 4) {
  9.     if (this.status >= 200 && this.status < 400) {
  10.       // Success!
  11.       var data = JSON.parse(this.responseText);
  12.     } else {
  13.       // Error :(
  14.     }
  15.   }
  16. };
  17. request.send();
  18. request = null;
  19. //谷歌浏览器,火狐浏览器,IE9+
  20. var request = new XMLHttpRequest();
  21. request.open('GET''/my/url'true);
  22. request.onload = function() {
  23.   if (request.status >= 200 && request.status < 400) {
  24.     // Success!
  25.     var data = JSON.parse(request.responseText);
  26.   } else {
  27.     // We reached our target server, but it returned an error
  28.   }
  29. };
  30. request.onerror = function() {
  31.   // There was a connection error of some sort
  32. };
  33. request.send();
  34. //谷歌浏览器,火狐浏览器,IE10+
  35. var request = new XMLHttpRequest();
  36. request.open('GET''/my/url'true);
  37. request.onload = function() {
  38.   if (this.status >= 200 && this.status < 400) {
  39.     // Success!
  40.     var data = JSON.parse(this.response);
  41.   } else {
  42.     // We reached our target server, but it returned an error
  43.   }
  44. };
  45. request.onerror = function() {
  46.   // There was a connection error of some sort
  47. };
  48. request.send();

Post

  1. //JQUERY
  2. $.ajax({
  3.   type'POST',
  4.   url'/my/url',
  5.   data: data
  6. });
  7. //谷歌浏览器,火狐浏览器,IE8+
  8. var request = new XMLHttpRequest();
  9. request.open('POST''/my/url'true);
  10. request.setRequestHeader('Content-Type''application/x-www-form-urlencoded; charset=UTF-8');
  11. request.send(data);

Request

  1. //JQUERY
  2. $.ajax({
  3.   type'GET',
  4.   url'/my/url',
  5.   successfunction(resp) {
  6.   },
  7.   errorfunction() {
  8.   }
  9. });
  10. //谷歌浏览器,火狐浏览器,IE8+
  11. var request = new XMLHttpRequest();
  12. request.open('GET''/my/url'true);
  13. request.onreadystatechange = function() {
  14.   if (this.readyState === 4) {
  15.     if (this.status >= 200 && this.status < 400) {
  16.       // Success!
  17.       var resp = this.responseText;
  18.     } else {
  19.       // Error :(
  20.     }
  21.   }
  22. };
  23. request.send();
  24. request = null;
  25. //谷歌浏览器,火狐浏览器,IE9+
  26. var request = new XMLHttpRequest();
  27. request.open('GET''/my/url'true);
  28. request.onload = function() {
  29.   if (request.status >= 200 && request.status < 400) {
  30.     // Success!
  31.     var resp = request.responseText;
  32.   } else {
  33.     // We reached our target server, but it returned an error
  34.   }
  35. };
  36. request.onerror = function() {
  37.   // There was a connection error of some sort
  38. };
  39. request.send();
  40. //谷歌浏览器,火狐浏览器,IE10+
  41. var request = new XMLHttpRequest();
  42. request.open('GET''/my/url'true);
  43. request.onload = function() {
  44.   if (this.status >= 200 && this.status < 400) {
  45.     // Success!
  46.     var resp = this.response;
  47.   } else {
  48.     // We reached our target server, but it returned an error
  49.   }
  50. };
  51. request.onerror = function() {
  52.   // There was a connection error of some sort
  53. };
  54. request.send();

特效

淡入淡出

  1. //JQUERY
  2. $(el).fadeIn();
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. function fadeIn(el) {
  5.   var opacity = 0;
  6.   el.style.opacity = 0;
  7.   el.style.filter = '';
  8.   var last = +new Date();
  9.   var tick = function() {
  10.     opacity += (new Date() - last) / 400;
  11.     el.style.opacity = opacity;
  12.     el.style.filter = 'alpha(opacity=' + (100 * opacity)|0 + ')';
  13.     last = +new Date();
  14.     if (opacity < 1) {
  15.       (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16);
  16.     }
  17.   };
  18.   tick();
  19. }
  20. fadeIn(el);
  21. //谷歌浏览器,火狐浏览器,IE9+
  22. function fadeIn(el) {
  23.   el.style.opacity = 0;
  24.   var last = +new Date();
  25.   var tick = function() {
  26.     el.style.opacity = +el.style.opacity + (new Date() - last) / 400;
  27.     last = +new Date();
  28.     if (+el.style.opacity < 1) {
  29.       (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16)
  30.     }
  31.   };
  32.   tick();
  33. }
  34. fadeIn(el);
  35. //谷歌浏览器,火狐浏览器,IE10+
  36. el.classList.add('show');
  37. el.classList.remove('hide');
  38. .show {
  39.   transition: opacity 400ms;
  40. }
  41. .hide {
  42.   opacity0;
  43. }

Hide

  1. //JQUERY
  2. $(el).hide();
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. el.style.display = 'none';

Show

  1. //JQUERY
  2. $(el).show();
  3. //谷歌浏览器,火狐浏览器,IE8+
  4. el.style.display = '';

推荐阅读

Python 爬虫面试题 170 道:2019 版

爬虫基本功之学点JS(一)

爬虫基本功之学点JS-DOM操作(一)

爬虫必备-如何使用Chrome DevTools花式打断点

添加微信[italocxa].回复:加群,加入Python交流群

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/396741
推荐阅读
相关标签
  

闽ICP备14008679号