在今天的工作中发现了一些小的问题,在网上查了一下,才知道自己的js才是冰山一角,以后要虚心向他人学习,要虚怀若谷.
发现一:js获取DOM对象与jquery的区别
先前总以为,二者是一样的,最近才知道,二者是不同的:
前者使用var jsTab = document.getElementById("tab");//其中tab为所选择dom对象id的属性值.
后者var jqTab = $("#tab");//不仅需要id属性值,还需要加上#,这是jquery所规定的.
用原生js获取的是DOM对象,而用jquery是对DOM对象包装后的对象.那么jquery的对象如何转换成DOM对象呢?很简单 jqTab.get(0)即可,即获取第一个数组元素即可,虽然jquery对象并不是数组,不过这里可以理解为数组.反过来呢?jqTab=$(jsTab).很简单吧,各位.
发现二:encodeURIComponent与encodeURI的区别
在向后台传递参数时,需要对中文进行编码时需要用到js中的这两个函数,那么这两者有神马区别呢?从网上查到的结果是这样的:
encodeURIComponent(params)该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。
encodeURI(params)该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#
以上出自w3cschool之encodeURIComponent,w3cschool之encodeURI.也就是说,对于;/?:@&=+$,#这些也需要编码时就需要前者了.那么两者用途在何处?前者用于POST传递参数时,后者用于url跳转.个人理解,不正确请各位赐教.