Case 1:

  通过getElementById("id")获得是一个DOM元素节点对象;

  通过getElementsByTagName("tagName")获得是包含多个DOM元素节点对象的数组;

  通过getElementsByClassName("className")获得是包含多个DOM元素节点对象的数组;

  通过getElementsByName("inputName")获得是包含多个DOM表单元素节点对象的数组;

Case 2:

  通过各种方法获取DOM节点后,给该节点的各种属性赋值的属性的时候,赋的值要以字符串的形式,如果是赋以变量,那么这个变量的值必须是一个字符串。如下面的例子:

<body>
<p id="p">hello world</p>
<button onclick="hide()">hide</button>
</body>
<script>
function hide(){
var p = document.getElementById("p").style.display = none;
//注意上面的none是一个变量,但是none是undefined,所以并不能达到效果
}
</script>

  上面的错误可以使用下面方法改正:

<body>
<p id="p">hello world</p>
<button onclick="hide()">hide</button>
</body>
<script>
function hide(){
//方法一 :直接给属性赋值字符串
var p = document.getElementById("p").style.display = "none"; //方法二 :赋值一个值为字符串的变量给属性
var none = "none";
var p = document.getElementById("p").style.display = none;
//将一个值为“none”的none变量赋值给display属性,可以达到效果
}
</script>

  

Case3:

尽量使用方括号来访问对象的属性:假设有这么一段代码:

function setAttr( key, v){
var p = document.getElementById("p1");
p.key = v;
}
setAttr("title","this is title");

  如果不手动测试一下,就只看代码,就很容易认为会正常运行,其实,这个代码也的确是正常运行了,也的确没报错,

  但是,调用setAttri函数给title属性设置值并不会成功,

  是因为传递的title或者值失败了吗?没有,参数传递是成功了的,问题就出在p.key = v; 这行代码上;

  这是因为在调用setAttri函数的时候,虽然传递给函数的是title,但是代码执行到p.key = v的时候,会将 p节点对象里面的“key”属性的值设置为v,对的,是字符串“key”,而不是变量key,不信的话,可以在控制台打印一下 alert(document.getElementById("p1").key),弹出内容就是“this is title”。

  建议使用方括号来访问和操作对象属性

function setAttr( k, v){
var p = document.getElementById("p1");
p[k] = v;
}
setAttr("title","this is title");

  

Case 4:

  JavaScript中的字符串在求长度,取某个位置的字符时,需要注意JavaScript默认使用utf-8编码:

var str = "hey中国";
console.log(str.length)//5
console.log(str.charAt(3)) //中
console.log(str[3])//中

  

JavaScript 编程易错点整理的更多相关文章

  1. JavaScript易错知识点整理

    前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一 ...

  2. JavaScript 易错知识点整理

    本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一些ES ...

  3. JavaScript易错知识点整理[转]

    前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一 ...

  4. forEach、map、filter、find、sort、some等易错点整理

    一.常用方法解析   说起数组操作,我们肯定第一反应就是想到forEach().map().filter()等方法,下面分别阐述一下各方法的优劣. 1.forEach 1.1 基础点   forEac ...

  5. javaScript初学者易错点

    大家好,这是我在博客园写的第一篇博文.作为一名前端开发初学者,由于经验不足,水平有限,在做项目的过程中总会遇到这样或那样的问题,每每这时候,我都比较喜欢到博客园这里来寻求解决方案,结果也总是能找到满意 ...

  6. ps和AI使用过程中的易错点整理

    ps:1.视图工具:1)标尺2)参考线3)网格:视图-->--显示>-->网格4)修改网格:编辑-->首选项>-->参考线.网格和切片 5)放大工具:画布中单击可放 ...

  7. java - 并发编程易错实例

    生产者消费者问题 https://juejin.im/post/5aeec675f265da0b7c072c56 notify()发生在wait()之前会怎么样?怎么处理? wati()等待条件的变化 ...

  8. STM32串口编程易错点

    注意   串口发送函数 使用STM官方的LIB 中的库函数发送之后 加一点延时   否则会错误  接收数据不正常 正确做法是  加上等待发送完成

  9. JavaScript易错知识点

    JavaScript易错知识点整理1.变量作用域上方的函数作用域中声明并赋值了a,且在console之上,所以遵循就近原则输出a等于2. 上方的函数作用域中虽然声明并赋值了a,但位于console之下 ...

随机推荐

  1. exec dbms_stats.gather_schema_stats 手动优化统计

    Oracle10g或以上版本.exec dbms_stats.gather_schema_stats(ownname => 'DFMS', options => 'GATHER AUTO' ...

  2. Spark算子讲解(二)

    1:glom def glom(): RDD[Array[T]] 将原RDD的元素收集到一个数组,创建一个数组类型的RDD 2:getNumPartitions final def getNumPar ...

  3. redis php扩展及基本命令

    linux 安装php mysql redis memchache 等工具 用 OneinStack 安装步骤 注意 如果有单独数据盘,建议您先挂载数据盘,建议将网站内容.数据库放在数据盘中.如何挂载 ...

  4. centos 切换nginx跟apache环境

    启动nginx的启动 nginx -c /etc/nginx/nginx.conf 停止nginx的方法切换到apache. pkill -9 nginx 直接杀死运行中的程序,关闭nginx ser ...

  5. ubuntu RPLIDAR A2的使用

    RPLIDAR是由RoboPeak Team,SlamTec公司开发的低成本2D LIDAR解决方案.它可以扫描6度半径内的360°环境. RPLIDAR的输出非常适合构建地图,做slam或构建3D模 ...

  6. Luogu P2661 信息传递

    传送门 一眼就能看出来是个并查集 但是并不会写... 看了一下题解说是并查集求最小环qwq 所以,每次加入第i个小同学,判断如果他要告诉的小同学k最后会告诉他(也就是转回来了), 就说明出现了一个环, ...

  7. Android TimeAnimator && TimeListener翻译

    TimeAnimator:提供了一个简单的回调机制,通过 TimeAnimator.TimeListener,在动画的每一帧处通知你.这个动画器没有时间,插值或是对象值设定.回调监听器为每一帧动画接受 ...

  8. TCP/IP协议--TCP的交互数据流和成块数据流

    前边讲了TCP连接的建立和终止,分别要三次握手和四次通信.这些报文段都只包含首部,没有数据部分.    这里就讲讲数据传送的一些细节.一个TCP连接建立成功以后,就可以开始传送数据了~ 一般TCP数据 ...

  9. eclipse中文字体大小修改

    貌似有不少人苦恼eclipse中文字体大小修改问题,默认的eclipse中文字体很小,和英文字体大小完全不在一个调子上,因为默认的eclipse juno中英文字体是Consolas,字体大小是10, ...

  10. Luogu3877 TJOI2010 打扫房间 二分图、网络流

    传送门 真是菜死了模板题都不会-- 首先\(30 \times 30\)并不能插头DP,但是范围仍然很小所以考虑网络流. 注意每个点都要包含在一个回路中,那么每一个点的度数都必须为\(2\),也就是说 ...