JS<dom、json>

JS: Java  Script

一、特性

(1) 脚本语言:avaScript是一种解释型的脚本语言。不同于Java等语言先编译后执行, JavaScript不会产生编译出来的字节码文件,而是在程序的运行过程中对源文件逐行进行解释。

(2)基于对象:JavaScript是一种基于对象的脚本语言,它不仅可以创建对象,也能使用现有的对象。但是面向对象的三大特性:『封装』、『继承』、『多态』中,JavaScript能够实现封装,可以模拟继承(本身没有继承),不支持多态,所以它不是一门面向对象的编程语言。

(3)弱类型:JavaScript中也有明确的数据类型,但是声明一个变量后它可以接收任何类型的数据,并且会在程序执行过程中根据上下文自动转换类型。

(4) 事件驱动:JavaScript是一种采用事件驱动的脚本语言,它不需要经过Web服务器就可以对用户的输入做出响应。

(5)跨平台性:JavaScript脚本语言不依赖于操作系统,仅需要浏览器的支持。因此一个JavaScript脚本在编写后可以带到任意机器上使用,前提是机器上的浏览器支持JavaScript脚本语言。目前JavaScript已被大多数的浏览器所支持。

1、Javascript代码要写在script标签内,script标签可以在文档内任意位置。

2、按钮  <button> </button>

<button id="btn">按钮</button>

<script>
    //1.获取按钮
    var btn1 = document.getElementById("btn");

    //2.绑定事件
    btn1.onclick=function(){
        //弹窗
        alert("HelloWorld");
    }
</script>

2、内部引入,外部引入[创建jswen文件]

<script>
    //内部js 可以放到html任意位置
    alert("我不困");
</script>
    <!--外部js
    使用script标签行引入,src:jc资源的位置-->
    <script src="demo.js"></script>

3、基本数据类型

不区分整数、小数,都是数值number类型的;

也不区分字符、字符串,单引号、双引号意思一样;

Boolean:true、false<0 "" null undefined NaN  false>

输出语句:console.log();

<!--基本数据类型-->
<script>
    //在js内,整数和小数都是number类型的
    var a = 10;
    console.log(a);

    console.log(typeof a);

    var b = 3.14;
    console.log(b);

    console.log("----------------------string------------------------------");

    //js内,单引号双引号都是用来表示字符串的
    var c = "你好";
    console.log(c);
    console.log(typeof c);

    c='我是中国人';

    console.log(c);
    console.log(typeof c);

    console.log("----------------------boolean------------------------------");

    var d = false;
    d = true;

    console.log(d);
    console.log(typeof d);
    //0 "" null undefined<声明变量但没有赋值的情况> NaN  false
    //只要不是上述内容就是true

    var b = 10;
    var c = "10";

    console.log(b == c);//true  自动转换类型再比较
    console.log(b === c);//false  带类型比较


</script>

4、函数

(1)内置函数    弹窗 alert

<!--内置函数-->
<script>
    //弹窗
    alert("666");

    //确定框
    var b = confirm("您确定要吃饭吗?");
    console.log(b);

    //输入框
    var s = prompt("请输入您的年龄:");
    console.log(s);

    var s = prompt("请输入您的地址","北京");
    console.log(s);


</script>

产生范围内随机数:  [m,n]
java:(int)(Math.random()*(n-m+1)+m);

 js : Math.floor(Math.random()*(n-m+1)+m)

(2) 声明函数    function 

<!--声明函数-->
<!--
    function  函数名(形参){
        函数内容
    }

1、通过函数名()进行调用
2、js中函数没有重载的概念,当有多个函数名字相同时,以最后声明的为准
3、如果没有给指定的形参传值,那么没那么没有值的形参值就是undefined
4、如果函数没有写返回值,那么执意接受值为undefined
    -->

<script>
    //函数声明
    function showMessage() {
        console.log("this is showMessage");
    }
    showMessage();//函数调用

    //有形参的函数
    function sum(a,b) {
        console.log(a+b);
    }
    //函数名+()
    sum(10,20);

    sum(10);

    //有返回值的函数
    function isOuShu(num) {
        if(num%2==0){
            return true;
        }else{
            return false;
        }
    }
    var b = isOuShu(11);
    console.log(b);

    function isJiShu(num) {

        if(num%2!=0){
            console.log("是奇数");
        }else{
            console.log("不是奇数");
        }
    }
    //如果函数没有写返回值 那么执意接收 值为 undefined
    var c =   isJiShu(11);
    console.log(c);

</script>

(3)函数调用   通过函数名直接调用

5、对象

<!--对象-->
 <!-- 创建对象的方式一:
     var obj =  new Object();
       新增属性 并完成了对属性的赋值
       对象名.属性名 = 值;
    创建对象的方式二:
      var 对象名 = {
        属性名: 属性值,
        属性名: 属性值,
        属性名: 属性值
        ......
  }
  获取属性值: 对象名.属性名;
-->
<script>
/*
this
    如果直接在script标签内输出this ,window 代表整个浏览器窗口
    如果有对象调用函数,那么函数内的this 指向函数的调用者即当前的对象
 */
    //创建对象方式一:
    var obj = new Object();

        obj.username="李白";
        obj.age=20;
        obj.salary=9999.6;
    console.log(obj);
    console.log(typeof obj);

    console.log("-------------------------------------------------");

    //创建方式二:
    var obj1 = {
        "username=":"杜甫",
        "age":19,
        height:1.81
    };

    console.log("------------------------有行为的对象----------------------")

    var cat = {
        "catname":"小白",
        'age':1,
        'catchmouse':function () {
            console.log("小猫抓老鼠...");
        }
    };

    cat.catname();
    cat.catchmouse();

    console.log("-------------------------------------------------");

    var obj = {
        "name":"杜甫",
        "age":"20",
        "showName":function () {
            console.log(this);
            console.log(this.name);
        }
    };
    obj.showName();
    //定义函数 getName()
    function getName() {
        console.log(this);
        console.log(this.name);
    }
    var obj1 = {
        "name":"王安石",
        "getName":getName
    };
    var obj2 = {
        "name":"李清照",
        "getName":getName
    };
    obj1.getName();
    obj2.getName();


</script>

6、构造器创建对象

<!--构造器创建对象-->
<script>
    //js构造器本质  函数
    //构造器函数 默认 函数名的首字母大写
    function Person(username, age, salary, height) {
        this.username = username;
        this.age = age;
        this.salary = salary;
        this.height = height;
    }

    var p4 = new Person("苏轼", 29, 9779.3, 1.96);
    console.log(p4);

    console.log("-------------------------------------");
    var p3 = new Person("王安石", 19, 9999.3, 1.76);
    console.log("函数调用前:" + p3.username);//王安石

    //对象传递的是地址值
    function chang(e) {
        e.username = "安琪拉";
        console.log("函数调用中:" + e.username);//安琪拉
    }
    //调用函数
    chang(p3);
    console.log("函数调用后:" + p3.username);//安琪拉

</script>

7、数组

<script>
    //创建数组
    //方法一
    var arr1 = new Array(2);

    arr1[0]="王昭君";
    arr1[1]="安琪拉";
    arr1[2]="妲己";

    console.log(arr1);
    console.log(arr1.length);
    //方法二
    var arr2 = new Array();
    arr2[0]="李白";
    arr2[1]="杜甫";
    arr2[2]="王安石";
    arr2[3]="李商隐";

    console.log(arr2);
    console.log(arr2.length);
    /*
    内数组可以改变,一旦数组长度小于原有数组的数量,从前往后,舍弃多的元素
                             大与原有数组的数量,则自动补empty
     */
    arr2.length=2;
    console.log(arr2);
    console.log(arr2.length);


</script>
</body>
>
<!--数组中的函数-->
<script>
    //创建数组
    var arr = ["项羽","虞姬","孙悟空","猪八戒"]
    console.log(arr);
    console.log(arr.length);

    //添加元素
    arr.push("嫦娥","蔡文姬","澜");
    console.log(arr);
    console.log(arr.length);


    //移除最后一个元素
    arr.pop();
    arr.pop();
    console.log(arr);
    console.log(arr.length);

    //元素反转
    arr.reverse();
    console.log(arr);

    //截取数组元素,数组名,slice(开始下标,删除的数量)
    arr.slice(1,2)
    console.log(arr);

    //删除指定下标的元素,数组名。splice(开始下标,删除的数量)
    arr.splice(1,2)
    console.log(arr);

    //将数组元素变为字符串,按照指定的分隔符进行填充
    var arr1 = ["a","b","c","d"];
    var s = arr.join(",");
    console.log(arr);




</script>

</body>
<!--数组的遍历-->
<script>
    var arr = new Array("李商隐","李白","杜甫","王安石");

    console.log(arr);

    //遍历方式一
    for(var index = 0;index <arr.length;index++){
        console.log(arr[index]);
    }

    //遍历方式二
    //放一个形参 代表数组元素
    arr.forEach(function (a) {
        console.log(a);
    });
    //两个形参,第一个形参代表元素,第二个元素代表下标
    arr.forEach(function (e,i) {
        console.log(e+"---"+i)
    });
    //在数组内,没有类型限制,任意数据都可以直接添加
    var arr1 = [10,20,30,"安琪拉",true];
    console.log(arr1);
</script>

7、JSON

<!--  json:数据的载体  数据的格式  -->
<script>
    //商品信息的json
    //价格 名称 数量 编号 产地
    var json = {
        "id":1,
        "price":100,
        "name":"官方皮肤",
        "area":"腾讯"
    };

    //人的信息
    var json = {
        "username":"李白",
        "age":20,
        "wife":{
            "username":"王昭君",
            "age":20,
        },
        "hobby":[
            "游泳",
            "读书",
            "喝酒" ,
            "写诗"
        ]
    };
</script>


</body>
<!--json与字符串的转换-->
<script>
    //将json对象转为字符串
    var s = JSON.stringify(json);
    console.log(s);
    console.log(typeof s);

    //将字符串对象转为json
    var str = '{"username":"李白","price":"100,"name":"皮肤"}';
    var parse = JSON.parse(str);
    console.log( parse);
    console.log(typeof parse);

</script>

8、DOM

DOM:Document  Object  Model 文档对象模型

document(对象):代表了整个文档
<body>
<input type="text" name="username">  <br>
<input type="text" name="username">  <br>
<input type="text" class="one">  <br>
<input type="text" class="one" id="first">  <br>
<script>
    //根据id获取指定的元素
    var elementById = document.getElementById("fiest");
    console.log(elementById);
    //根据标签名获取指定的元素
    var elementsByTagName = document.getElementsByTagName("input");
    for (var i = 0; i < elementsByTagName; i++) {
        console.log(elementsByTagName[i]);
    }
    //根据类名获取指定的元素
    var elementsByClassName = document.getElementsByClassName("one");
    for (var i = 0; i < elementsByClassName; i++) {
        console.log(elementsByClassName[i]);
    }
    //根据name属性获取指定的元素
    var elementsByName = document.getElementsByName("username");
    for (var i = 0; i < elementsByName.length; i++) {
        console.log(elementsByName[i]);
    }

    /*
    如果此选择器有多个标签满足要求时,取第一个满足要求的数据
        想要全部列出用document.querySelectorAll();
     */
    //获取id名为fiest的元素
    var element = document.querySelector("#first");
    console.log(element);
    //获取类名是one的元素
    var element1 = document.querySelector(".one");
    //querySelectorAll获取所有的数据
    var InputElement = document.querySelector("input");
</script>

</body>
<!--节点测试-->
<div id="box">
    1 <input type="text" name="username"> <br>
    2 <input type="text" name="username" id="three"> <br>
    3 <input type="text" name="username" id="two"> <br>
</div>
4 <input type="text" class="one" id="first"> <br>

<script>
    //获取box div
    var box = document.querySelector("#box");
    console.log(box);
    //获取所有的子元素
    var children = box.children;
    console.log(children);
    //获取父节点
    var two = document.querySelector("#two");
    var parentElement = two.parentElement;
    console.log(parentElement.parentElement.parentElement);
    //获取所有的input
    //选择器可以组合使用
    //#box input 去找 id为box的 标签内 名为 input的子标签
    var querySelectorAll = document.querySelectorAll("#box input");
    console.log(querySelectorAll);
    //获取 id为three的 input
    var three = document.querySelector("#three");
    console.log(three);
    //获取前一个兄弟
    console.log(three.previousElementSibling.previousElementSibling);
    //获取后一个兄弟
    console.log(three.nextElementSibling.nextElementSibling);
</script>

</body>
<!--属性操作-->
<a href="Test.html" id="aid">点击一下</a>  <br>
<input type="text" value="666" id="input_id">
<script>

    //获取a标签
    var element = document.querySelector("#aid");
    //获取属性值
    //元素.属性名
    console.log(element.href);
    //设置属性值
    // 元素.属性名=值;
    element.href="http://www.baidu.com";
    var element1 = document.querySelector("#input_id");
    console.log(element1.value);
    element1.value=999;

</script>

</body>
<!--设置获取文本-->
    <style>
        #box{
            height: 200px;
            width: 200px;
            background-color: orange;
        }
    </style>
<div id="box">123</div>
<script>
    /*
    innerText
    innerHTML
    同:
        通过元素.innerText/innerHTML 获取文本信息

     不同:
        元素.innerText=值;
        元素.innerHTML=值;
      innerHTML可以解析 值中的 html标签  innerText 不能解析
     */
    var box = document.querySelector("#box");
    /* console.log(box.innerText);
     box.innerText='<h1>你好世界</h1>';*/
    console.log(box.innerHTML);
    box.innerHTML='<h1>你好世界</h1>';
</script>

</body>
<!--节点的操作-->
<div>
    <p id="p1">AA1</p>
    <p id="p2">AA2</p>
    <p id="p3">AA3</p>
</div>
<script>
    //通过js代码 新增节点
    //1、获取boxdiv
    document.querySelector(".box");
    //2、创建新的节点
    document.createElement("p");
    newP.innerText="AA6";
    //3、将新的节点添加到div内
    box.appendChild(newP);
    //4、删除节点
    var p2 = document.quertSelector("#p2");
    //删除自己
    p2.remove();
    //再次创建新节点
    var newP2 = document.querySelector("p");
    newP2.innerText="newP2新节点";
    //在指定的子节点之前,插入新的子节点
    box.insertBefore(newP2,p2);


</script>

9、事件
 

    <title>javaScript的事件驱动</title>
</head>
<body>
<!--事件一:按钮 单击 事件-->
<button onclick="alert(666)">点我</button>
<br>
<button onclick="show()">点我</button>
<br>
<button id="btn">再点我ing</button>
<script>
    /*
    事件绑定三种方式:
        1. 直接在元素上绑定 写js代码
        2. 直接在元素上绑定 引用js的函数
        3. 通过匿名函数的方式对元素进行事件绑定
     */
    function show(a) {
       console.log(a);
    }
    //获取button
    var btn = document.querySelector("#btn");
    btn.onclick = function () {
        alert("你点的爽不爽......")
    }
</script>

</body>
<!--事件二:双击 焦点事件-->
<span>请您输入名字</span> <input type="text" id="in">   <br>
<button id="btn">点我</button>
<script>
    var btn = document.querySelector("#btn")
    //双击事件
    btn.ondblclick=function () {
        alert("终究还是选择了你");
    }

    var input = document.querySelector("#in");
    input.onfocus = function () {
        console.log("获取焦点了");
    };

    input.onblur = function () {
        console.log("失去焦点了");
    };

    //内容发生改变,触发onchange
    input.onchange = function () {
        console.log("onchange 触发了....");
    };

    //键盘被按下
    window.onkeydown = function () {
        console.log("键盘被按下");
        //获取键盘输入 console.log(event.key);
    };
</script>

</body>
<!--事件三:鼠标事件-->
<style>
    div{
        height: 200px;
        width: 200px;
        background-color: orange;
    }
</style>
<div>

</div>
<script>
    var div = document.querySelector("div");
    div.onmousedown=function () {
        console.log("鼠标被按下了");
    };

    div.onmouseup=function () {
        console.log("鼠标被抬起了");
    };

    div.onmousemove=function () {
        console.log("鼠标移动了");
    };

    div.onmouseout=function () {
        console.log("鼠标离开了");
    };

    div.onmouseover=function () {
        console.log("over");
    }
</script>

   

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值