原生js基础入门

Posted 讲明白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原生js基础入门相关的知识,希望对你有一定的参考价值。

一、基础语法

1、js语法嵌入页面的方式

html中的脚本必须位于标签之间,脚本可放置在body和head中

1.行间事件(主要用于事件)

<input type="button" value="按钮" onclick="alert(‘被点击了‘)">

2.页面script标签

<script type="text/javascript">
    window.onload = function () {
        document.getElementById("box1").style.background = "red"
    }
</script>

3.外部引入

<script type="text/javascript" src="js/main.js"></script>

2、注释

我们可以添加注释对js进行解释,或者提高代码的可读性

  • 单行注释://
  • 多行注释:/* */

3、变量

变量命名

  • 变量可以使用端名称(比如x和y)也可以使用描述性更好的名称(age,name,sum)
  • 变量必须以字幕开头
  • 变量也能以$和_开头(不推荐)
  • 变量名称对大小写严格区别

声明变量:var

  • js中可以变量可以先声明在赋值
  • 也可以在声明的时候赋值
  • 也可以同时声明多个或者多都赋值
  • 声明未赋值会打印:undefined(区别于null)
var name; //声明不赋值
var age = 18; //声明时赋值
var id = 1, text = "js基础" // 同时声明多个

4、数类类型

字符串、数字、布尔、Null、undifined、数组

js也是一门弱类型语言,类似于python,所以定义变量时也不需要声明类型

number:数字类型

  • var y = 3;

string 字符串类型

  • var str = "javascript";

boolean 布尔类型

  • var status =true or false;

undefined 类型:只定义没赋值

  • var status;

null 类型:类似python中的None

  • var status = null;

arry 数组类型

  • 数组类似python中的list,也可以通过下表取值
  • length属性:获取数组的长度:
  • pop():删除最后一个值,并返回和pyhton一样
  • push(): 像数组最后添加一个元素,类似python中的append
// 执行代码
//创建数组 Array
var data_array = Array("html", "css", "js");
//一样可以通过下标取值,可以for遍历得到下标
console.log(data_array[0]);
//通过length获取数组长度
console.log(data_array.length);
//pop()方法从数组删除最后一个元素并返回,和python中一样
data_array.pop();
console.log("删除之后:", data_array);
//push 方法把元素添加到数组最后一个位置
data_array.push("javascript");
console.log("添加之后:", data_array)

5、运算符

  • 算数运算符:++ 、-- 、** 、// 、%
  • 赋值运算符:=、+=、*=、/=、%=
  • 条件运算符: == 、=== 、> 、>= 、< 、<= 、!=(不管类型,只管值) 、!==(值和类型必须都不等)
  • 逻辑运算符:&&(且)、||(或)、!(否)

6、条件语句

通过条件来控制程序的走向、就需要用到条件语句/

1、if语句:if(条件){逻辑}

2、else if语句:else if(条件){逻辑}

3、else语句:else{逻辑}

var age = 19;
if (age > 18) {
    console.log("大于18")
} else if (age === 18) {
    console.log("等于18")
}else {
    console.log("小于18")
}

4、switch语句

switch(表达式){
    case n1:
        代码块
        break;
    case n2:
        代码块
        break;
    case n3:
        代码块
        break;
    default:
        默认代码块
}
  • 计算一次switch表达式
  • 把表达式的值与每个case的值进行对比
  • 如果存在匹配,则执行关联代码
  • 遇到break关键词,会跳出switch语句
  • case匹配都不存在时,会执行default的代码
  • 案例:
var a = 5, b = 7;
switch (b-a) {
    case 6:
        console.log("等于6");
        break;
    case 7:
        console.log("等于7");
        break;
    default:
        console.log("不等于6 7 ")
}

7、函数

定义函数的关键词function,函数内的代码块、包裹在花括号中:

// 定义函数:关键字+函数名+参数+{代码块},
// 细节和python一样:
// 1、参数定义和形式
// 2、return 返回值
function func(param1, param2 = 3) {
    console.log(param1);
    console.log(param2);
    return param1 + param2
}
// 调用
var sum = func(55);
console.log(sum)

8、对象

创建对象:对象用花括号分割,在括号内部,类似python中字典, 也时key:value形式,value接收任意类型数据,包括函数

1、创建方式一:

// new Object 初始化一个字典
// 然后可以像python中一样添加键值对
obj_1 = new Object();
obj_1["name"] = "张三";
console.log(obj_1)

2、创建方式二:

直接定义变量接收花括号{}

// 对象中可以接收任意类型,包括函数,
// 跟python字段非常相似。
// js中的key 可以不不加引号。
// 操作属性,可以和python中一样用[],也可以直接点出来,而python是get()方法
var obj_2 = {
    name: "李四",
    age: 16,
    gender: "男",
    sum: function (var1) {
        console.log(var1+12)
    }
};
// 调用
console.log(obj_2.sum(20))

9、 循环

主要分为三种: while(条件)、for(语句1,语句2,语句3)、 for (i in iteration)==遍历

1、while循环

和python基本一样,基本不用。for更省代码

while(条件语句){
    循环体
}

案例循环打印1-5

var a = 1;
while (a<=5){
    console.log(a);
    a++;
}

2、for循环

一般都用for循环来取代while循环

for(语句1,语句2,语句3){
    循环题
}
  • 语句1:在循环开始之前执行
  • 语句2:循环条件,成立则执行循环体
  • 语句3:每一轮循环执行之后执行的语句

案例循环打印1-5

// 注意三个语句要用分号分割,不是逗号
for (i = 1; i <= 5; i++) {
    console.log(i)
}

3、for遍历

for(i in Array("a","b","c"){
    循环体
}
  • 遍历和python中的遍历一样
  • 需要注意的是遍历数组,遍历出来的 i 不是元素,是元素的下标, 一样可以根据下标取值
  • 遍历对象,遍历出来的是属性,可以通过[属性]获取值,但是不能点属性出来,因为遍历出来的是字符串
 // 遍历数组
var list_data = Array("a","b","c");
for (i in list_data){
    console.log(i);   // 下标
    console.log(list_data[i])
}



// 遍历对象
var obj_2 = {
    name: "李四",
    age: 16,
    gender: "男",
    sum: function (var1) {
        console.log(var1 + 12)
    }
};
for (i in obj_2){
    console.log(i); // 属性,也就是key
    // console.log(obj_2.i)  不能点i了
    console.log(obj_2[i])
}

二、js页面操作

1、DOM简介

通过HTML DOM,js可访问HTML文档的所有元素

当页面子被加载时,游览器会创建页面的文档对象模型(Document Object Model)

HTML DOM 模型会呗构造成树结构

节点树中的节点彼此拥有层级关系

  • 父(parent)、子(chidren)、同胞(sibliing)、等术语用于描述这些关系,父节点拥有子节点,同级节点称为同胞或兄弟姐妹

通过可编程的对象模型,js获得了足够的能力来动态创建HTML

  • 如何改变HTML元素的内容(innerHTML)
  • 如何改变HTML元素的css样式(style)
  • 如何添加或删除HTML元素
  • 如何对HTML DOM事件做处反应

2、获取页面标签

1、获取标签的方式

通常通过javascript才周一HTML元素,可以使用内置对象document的提供的三种方法找到该标签

// 1、通过id属性
document.getElementById("id")

// 2、通过标签名
// 返回的时一个数组
document.getElementsByTagName("div")

// 3、通过类属性名称
// 返回一个数组
document.getElementsByClassName("class")

2、获取标签注意的问题

当我们在head标签中 或 js文件中 直接写js代码获取页面元素时,会报错元素不存在

是因为,代码是从上往下执行的,加载js代码时,html还没加载,导致无法找到元素

解决办法

方法一:把js代码带在body标签 元素最后面,这样元素加载完,在执行代码就能找到元素了

方法二:js代码加入 window.onliad = function(){} js代码放在函数内,这样就会等html页面加载完在执行js

// 加入windos.onload 就会等页面加载完在执行js
window.onload = function () {
    document.getElementById("box1").style.background="red";
};

3、操作标签内容---子集

  • innerHTML 属性
    • 获取元素的子集的最简单的方法时使用innerHTML属性,innerHTML属性对与获取或替换HTML元素的内容很有用
  • 读取节点文子集

<div id="box3">
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>
</div>

# 读取的时整体ul,只有文本时,就等于文本读取
window.onload = function () {
    console.log(document.getElementById("box3").innerHTML)
};
  • 写入节点文本
// 注意会把元素子节点先清空在赋值
window.onload = function () {
    document.getElementById("box3").innerHTML="box33333333333";
};
  • 仅获取元素下文本或子元素文本- innerText
window.onload = function () {
    console.log(document.getElementById("box3").innerTEXT)
};

4、修改标签属性

  • 操作属性的方法

    • element.属性名 = "属性值" ;
  • 案例-修改input type属性值

//html 
输入框:<input type="text" name="user" id="user">

// js 修改type为 button
document.getElementById("user").type = "button";
document.getElementById("user").value = "按钮";

5、事件操作

主要就是触发鼠标事件后的一系列捕捉,及捕捉后的操作,后面学到jquery操作这些更加方便简单,原生js仅稍微介绍一下。。。

//html
<div id="box2" >box2</div>

// click, 程序自动触发click事件,操作元素更换背景颜色,
// 不能接收回调函数
ele = document.getElementById("box2");
    ele.click(
        ele.style.background = "red",
        console.log("自动化触发变更颜色")
    );

//onclick 程序没有自动出发,激发点击事件时触发
// 可以接收回调函数
ele.onclick = function () {
    this.style.background = "cyan";
    console.log("主动点击变色")
}

以上是关于原生js基础入门的主要内容,如果未能解决你的问题,请参考以下文章

react基础入门:原生JS基础测试

Node.js 原生开发入门完全教程(上)

react基础入门:原生JS操作DOM元素

网站前端_Jquery-基础入门.0001.原生Js到后期封装库Jquery的过渡?

js经常用到的代码片段

JavaScript从入门到放弃JS基础-01