知行合一
Choose a quality life!

一,   widow对象是javaScript中最高层对象之一,       window是其他大部分对象的共同祖先,       在调用属性和方法时可以省略window

        理解:          在javaScript中生成的任意对象都是window的子对象,也包括BOM和DOM生成的对象

       BOM         (Brower Object Model    浏览器对象模型,)          实现了js与浏览器之间的交互

  DOM         (Document Object Model   文档对象模型)           通过它可以访问html中的所有标签元素

了解的一些方法:  (不加window直接用也行)

                       window.innerHeight - 浏览器窗口的内部高度                   window.innerWidth - 浏览器窗口的内部宽度

                  window.open() - 打开新窗口                           window.close() - 关闭当前窗口 

          navigatior.appName        查看浏览器名字                              navigator.appVersion      查看浏览器厂商和版本详情

        navigator.userAgent       查看客户端绝大部分信息              navigator.platform       查看浏览器运行的操作系统

        screen.availWidth           查看可用的屏幕宽度                      screen,availHeight        查看可用的屏幕高度

        history.forward()              页面前进一页                                        history.back()               页面后退一页

   弹出框;  alert("字符串")     ==>警告框             询问用户确认某某信息,,   需要点确定才能继续i

                        confirm("字符串")    ==>确认框          询问需要某某信息         点击确认返回ture,点击取消返回false

                           prompt("字符串")     ==>提示框          提示用户输入某某信息的弹出框      确认则返回 输入值,不输则返回空,取消则返回null

BOM:     常用:     location(对象)                         location.herf                      获取URL,获取当前页面的url

                                 location.herf = 'URL'         跳转到指定的页面

                     location.reload()              重新加载页面

              计时相关:  宗旨是在隔一定的时间间隔之后来来执行代码                                          

    定时执行     setTimeout ("js语句",毫秒)                                      如:  var a = setTimeout (function() {return 5},3000)         

                                          第一个参数可以是个字符串,则返回值是字符串(?)         第二个参数是时间          1000ms=1s                            疑问:字符串如何获得返回值

                                          对函数的调用,   注意如果是函数,则执行返回函数的返回值,,若没有返回值则返回计数(定时运行次数)

            clearTimeout(设置的定时器变量)     注意:  打断定时命令,用在计时状态,用来打断计时

   循环定时执行       setInterval("js语句",时间间隔)                                      如:   var a = setInterval(function() {console.log(5)},3000) 

             setInterval()  会循环计时来调用函数或者计算     ,返回的ID值作为打断参数,     如 :     clearInterval(a) 加回车    就能打断循环计时

        

 DOM;       常用:

                一,查找标签:   直接查; 1, document.getElementById()      根据 id 获得标签, 括号内是id的值,     

                               如:  var  s =  document.getElementById('c1')           s.value  ==>就能获得标签的属性内容      s.value='c2'    ===>修改标签属性值内容

                        s2 = document.getElementById('c1') .innertext = 'c2'   ===>修改标签之间的文本内容

                             s.classlist         ===>获取的是类的对象.包含全部的类元素              s.classlist.remove('c1')   ==>移除类中的元素c1

                              s.classlist.add('c1')    ===>类中添加新元素

             2,document.getElementsByClassName()      根据class属性获取标签 ,括号内是类属性的值 

                    如:  var s =  document.getElementsClassName('c1')      

                    s.className      ==>  注意:返回的是个数组(列表),通过索引就能取值 ,   查到所有的含 c1 的标签

                                       s[0].innerText = c2   ==>修改标签之间的文本内容      

             3.doctument.getElementsByTagName()         根据标签元素获得所有标签,括号内是标签元素,

                     如:  var s =  document.getElementsClassName('p')    注意所得的 s 是个数组,通过索引就能取值修改

                间接查:     多用于查找标签之间的嵌套关系,这些都是属性不用加括号调用'

               var  s =  document.getElementById('c1') 

                                                      s.parentElement ===>  找到该标签的父标签                               s.children  ===> 找到该标签的所有子标签

               s.firstElementChild    ===>查找该标签下第一个子标签                s.lastElementChild     ===>找到该标签下最后一个子标签

               s.nextElementSibling    ===>下一个兄弟标签元素                   s.proviousElementSibing     ===>上一个兄弟标签元素 

       二,标签操作 

              1.创建标签     如:var a = document.createElement('div');         a .innertext = '太阳'         括号里是标签元素,  后面是为标签添加内容

           2,给标签添加内容    var  s =  document.getElementById('c1') 

                 (1) s.innreText = '某某值'                   (2)   s.innerHTML="<a href="">a标签</a>"

           3,添加标签,到document中  

                (1) 父标签.appendChild(新标签)                           在父标签之后添加新的标签

                (2) 父标签.insertBefore(新标签,子标签)                在父标签中的指定子标签之前添加新标签

           4,删除标签         父标签.removerChild(要删除的子标签)   

           5,替换标签             父标签.replaceChild(新标签,旧标签)                 将父标签中旧标签替换成新的标签

        三.标签属性操作;

            var a = document.getElementById('d1')                         
            a.setAttribute('age','18')               ===>设置 a 标签对象的属性

            a.getAttribute('age','18')               ===>查找  a 标签对象的属性

            a.removeAttribute('age')               ===> 删除a 标签对象属性

            自带的属性还可以直接     .属性名       点属性名的方式来获取和设置          ====>  a.src       或者   a.src ='某某js文件'

        四,样式类 的操作;                 var a = document.getElementsByClassName('.c1');        

            1,操作class           1,  className           ===>获取字符串格式的样式类

                    2,   classlist                ===>获取数组格式的样式类

                    3    classlist.remove('点样式类')           ===>删除指定的样式类

                    4,   classlist.add('点样式类')                ===>添加指定的样式类

                    5,   classlist.contains('点样式类')          ===>查询是否含有该样式类,存在返回ture,不在返回false

                    6,   classlist.toggle('点样式类')             ===>查询存在就删除,不在就添加

            2,直接操作css样式      语法 :     obi.style.属性名= '某某值'           加上等号就能修改,不加等号能获取

                   1, 对于没有中横线的css属性一般直接使用     obi.style.属性名     的方式即可调用

                     如:  obj.style.margin      obj.style.width    obj.style.left        obj.style.position

                   2, 对含有中横线的css属性,将中横线后面的第一个字母换成大写就行

                     如:   obj.style.marginTop     obj.style.borderLeftWidth     obj.style.zIndex

        五,值的操作;               var a = document.getElementsByClassName('.c1'); 

                                                                注意:特定标签的使用范围;(input    select      textarea)

                1.   a.value      ==>  获取 a对象 的value值       2. a.value= '要设置的值'      ==>   修改 a对象的Value值

        六,事件

onclick        当用户点击某个对象时调用的事件句柄。
ondblclick     当用户双击某个对象时调用的事件句柄。

onfocus        元素获得焦点。               // 练习:输入框
onblur         元素失去焦点。               应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.
onchange       域的内容被改变。             应用场景:通常用于表单元素,当元素内容被改变时触发.(select联动)

onkeydown      某个键盘按键被按下。          应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
onkeypress     某个键盘按键被按下并松开。
onkeyup        某个键盘按键被松开。
onload         一张页面或一幅图像完成加载。
onmousedown    鼠标按钮被按下。
onmousemove    鼠标被移动。
onmouseout     鼠标从某元素移开。
onmouseover    鼠标移到某元素之上。

onselect      在文本框中的文本被选中时发生。
onsubmit      确认按钮被点击,使用的对象是form。

绑定方式一;    this是实参,表示触发事件的当前元素。    函数定义过程中的ths为形参。

<div id="d1" onclick="changeColor(this);">点我</div>
<script>
  function changeColor(ths) {
    ths.style.backgroundColor="green";
  }
</script>

绑定方式二;

<div id="d2">点我</div>
<script>
  var divEle2 = document.getElementById("d2");
  divEle2.onclick=function () {
    this.innerText="呵呵";
  }
</script>

联动;

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="x-ua-compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>select联动</title>
</head>
<body>
<select id="province">
  <option>请选择省:</option>
</select>

<select id="city">
  <option>请选择市:</option>
</select>

<script>
  data = {"河北省": ["廊坊", "邯郸"], "北京": ["朝阳区", "海淀区"], "山东": ["威海市", "烟台市"]};

  var p = document.getElementById("province");
  var c = document.getElementById("city");

  for (var i in data) {
    var optionP = document.createElement("option");
    optionP.innerHTML = i;
    p.appendChild(optionP);
  }
  p.onchange = function () {
    var pro = (this.options[this.selectedIndex]).innerHTML;
    var citys = data[pro];
    // 清空option
    c.innerHTML = "";

    for (var i=0;i<citys.length;i++) {
      var option_city = document.createElement("option");
      option_city.innerHTML = citys[i];
      c.appendChild(option_city);
    }
  }
</script>
</body>
</html>

select联动
View Code

 

              

                      

                

                                                

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                  

 

posted on 2018-09-06 20:10  小米没吃饭  阅读(201)  评论(0编辑  收藏  举报