美文网首页
js基础常见问题总结(二)~

js基础常见问题总结(二)~

作者: ConRon | 来源:发表于2017-07-14 00:12 被阅读0次

1. undefined和net defined的区别

未发现,未定义。如果你在函数中调用了一个没有定义的变量,就会提示not defined。你定义一个变量但是未给它赋值,你alert的时候就是undefined了

2.严格模式

use strict
为什么用严格模式:
  消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
  消除代码运行的一些不安全之处,保证代码运行的安全;
  提高编译器效率,增加运行速度;
  为未来新版本的Javascript做好铺垫。

"严格模式"体现了Javascript更合理、更安全、更严谨的发展方向,包括IE 10在内的主流浏览器,都已经支持它,许多大项目已经开始全面拥抱它。

另一方面,同样的代码,在"严格模式"中,可能会有不一样的运行结果;一些在"正常模式"下可以运行的语句,在"严格模式"下将不能运行。

语法与行为改变:
  禁止this关键字指向全局对象
  全局变量显式声明
  禁止删除变量
  对象不能有重名的属性
  函数不能有重名的参数

3.ajax

  • 全称(Asynchrounous JavaScript And XML)异步的js和XML
  • 为什么要用ajax?
       通过异步模式,提升了用户体验
       优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用
       Ajax引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服务器负载。
  • AJAX的特点。
      基于Web标准,使用文档对象模板(Document Object Model)作动态显示和交互;使用XML和XSLT进行数据交换及相关操作;使用XMLHTTPRequest进行异步数据查询和接收;使用JavaScript将所有的东西绑定在一起。

4.JS动态添加option和删除option

**1.动态创建select **

 function createSelect() {
        var mySelect = document.createElement("select");
        mySelect.id = "mySelect";
        document.body.appendChild(mySelect);
 } 

**2.添加选项option **

    function addOption(){
//根据id查找对象, 
        var obj=document.getElementById('mySelect');
//添加一个选项 
        obj.add(new Option("文本","值")); //这个只能在IE中有效 
        obj.options.add(new Option("text","value")); //这个兼容IE与firefox 
    }

**3.添加选项option **

    function addOption(){
//根据id查找对象, 
        var obj=document.getElementById('mySelect');
//添加一个选项 
        obj.add(new Option("文本","值")); //这个只能在IE中有效 
        obj.options.add(new Option("text","value")); //这个兼容IE与firefox 
    }

4.删除一个选项option

    function removeOne() {
        var obj = document.getElementById('mySelect');
        //index,要删除选项的序号,这里取当前选中选项的序号 
        var index = obj.selectedIndex;
        obj.options.remove(index);
    }

** 5.获得选项option的值**

    var obj = document.getElementById('mySelect');
    var index = obj.selectedIndex; //序号,取当前选中选项的序号 
    var val = obj.options[index].value;

6.获得选项option的文本

    var obj = document.getElementById('mySelect');
    var index = obj.selectedIndex; //序号,取当前选中选项的序号 
    var val = obj.options[index].text;

** 7.修改选项option**

    var obj = document.getElementById('mySelect');
    var index = obj.selectedIndex; //序号,取当前选中选项的序号 
    var val = obj.options[index] = new Option("新文本", "新值");

8.删除select

    function removeSelect() {
        var mySelect = document.getElementById("mySelect");
        mySelect.parentNode.removeChild(mySelect);
    }
 ```
##5.JS滚轮事件(mousewheel/DOMMouseScroll)
  IE6在内的浏览器是使用onmousewheel,而FireFox浏览器一个人使用DOMMouseScroll. 经自己测试,即使现在FireFox 19下,也是不识onmousewheel。
##6. js判断鼠标滚轮方向

var scrollFunc = function (e) {
e = e || window.event;
if (e.wheelDelta) { //判断浏览器IE,谷歌滑轮事件
if (e.wheelDelta > 0) { //当滑轮向上滚动时
//事件
}
if (e.wheelDelta < 0) { //当滑轮向下滚动时
//事件
}
} else if (e.detail) { //Firefox滑轮事件
if (e.detail > 0) { //当滑轮向上滚动时
//事件
}
if (e.detail < 0) { //当滑轮向下滚动时
//事件
}
}
}

##7.滚动距离
  document.documentElement.scrollTop;
  document.documentElement.scrollLeft;


##8.JavaScript中getBoundingClientRect()方法详解
**getBoundingClientRect()**
   这个方法返回一个矩形对象,包含四个属性:left、top、right和bottom。分别表示元素各边与页面上边和左边的距离。

var box=document.getElementById('box'); // 获取元素

alert(box.getBoundingClientRect().top); // 元素上边距离页面上边的距离

alert(box.getBoundingClientRect().right); // 元素右边距离页面左边的距离

alert(box.getBoundingClientRect().bottom); // 元素下边距离页面上边的距离

alert(box.getBoundingClientRect().left); // 元素左边距离页面左边的距离

##9. JS中onmouseover与onmouseout的bug
  在Javascript中,父元素包含子元素,当给父元素设置onmouseover或onmouseout事件时,鼠标从父级移入子级的时候会多次触发onmouseover事件;鼠标从子级移入父级后再次移出的时候也会多次触发onmouseout事件。
- 事件对象相关属性(只针对onmouseover与onmouseout):
  oEvent.fromElement(从哪里来的元素):兼容IE,Chrome
  oEvent.toElement(去哪里的元素):兼容IE,Chrome
  oEvent.relateTarget(相关元素):兼容FF 
- 还可以使用onmouseenter与onmouseleave事件来代替onmouseover与onmouseout事件
  
##10. 事件对象
  在触发DOM上的某个事件时,会产生一个事件对象event。这个对象中包含着所有与事件有关的信息。包括导致事件的元素,事件的类型以及其他与特定事件相关的信息。
ev:兼容高版本浏览器
event:兼容谷歌和IE

##11.事件绑定及移除
  addEventListener(事件名,函数,true/false)
  attachEvent("on+事件名",函数)
  removeEventListener(事件名,函数,true/false)
  detachEvent("on+事件名",函数)

相关文章

  • js基础常见问题总结(二)~

    1. undefined和net defined的区别 未发现,未定义。如果你在函数中调用了一个没有定义的变量,就...

  • js基础常见问题总结(三)~

    web前端性能优化总结 浏览器访问优化 1、减少http请求,合理设置 HTTP缓存2、使用浏览器缓存3、启用压缩...

  • js基础常见问题总结(一)~

    1. 什么是web标准 简单的说,就是HTML、CSS、JavaScript这三者分离。WEB标准不是某一个标准,...

  • js基础总结(二)

    解决this在一些情况下不能使用的问题1.箭头函数2.定时器外层代码写一个变量 解决i在一些情况下不能使用的问题1...

  • 2018-08-17day-25

    总结 : js基础 js基础语法 1.js是javaScrip的缩写,是一门脚本语言。专门用来负责网...

  • 5-1 从基础知识到JSWebAPI

    回顾js基础知识 JS-web-API 总结 回顾js基础知识 变量类型和计算 原型和原型链 闭包与作用域 异步和...

  • js常见问题总结

    优雅降级VS渐进增强 (好像是css3出来之后火起来的,低版本的浏览器针对css3兼容性较差,而又不想放弃优秀的c...

  • react-native 爬坑经历

    常见问题总结: react native 常见问题总结 - 简书 1. unable to load script...

  • js 基础理论总结(二)

    运算符 运算符也叫操作符 通过运算符可以对一个或多个值进行运算,并获取运算结果 比如:typeof就是运算符,可以...

  • js基础总结

    GitHub地址源码地址 typeof 判断数据类型 数据分为值类型(undefined、string,numbe...

网友评论

      本文标题:js基础常见问题总结(二)~

      本文链接:https://www.haomeiwen.com/subject/ytnghxtx.html