前端之路-JavaScript 介绍

1. JavaScript 介绍

1. 发展历史

JavaScript是由Web发展初期的网景(Netscape)公司创建,“JavaScript”是Sun Microsystem公司(现在的 Oracle)的注册商标,用来特指网景(现在的Mozilla)对这门语言的实现。 网景将这门语言作为标准提交给了ECMA-欧洲计算机制造协会 -由于商标上的冲突,这门语言的标准版本改了一个丑陋的名字“ECMAScript”同样由于商标的冲突,微软对这门语言的实现版本取了一个广为人知的名字“Jscript”实际上,几乎所有人都将这门语言叫做“JavaScript”. 所以JavaScript的标准是ES,而JS则是ES标准的实现。 2017年发布了ES8(2017),2018年发布了ES9(2018)。ES标准在不断的吸收其他编程语言的优点,尤其是脚本语言。所以JavaScript看上去也和Python有很多的类似之处。

如果把HTML比做一个人,那么CSS就是衣服,那JS就是指人的动作和行为

JavaScript

高级,动态,解释型编程语言

面对对象和函数式编程风格

JavaScript的变量无类型

命名
  • JavaScript是区分大小写

    代表这是什么?

    ​ 关键字,变量,函数名和其他的标识符必须始终保持一致的大小写形式

    ​ while关键字就必须写成while 不能写成While or WHILE

注释

JavaScript二种注释

  • 单行注释 //

  • 多行注释 /* */

    注意

    可以跨行但是不能嵌套

字面量

什么是字面量是一种直接出现在程序中的数据值

"a"  //字符串
1.2  //数字
true  //布尔值·
null  //无对象
标识符和保留字

标识符简单说就是一个名字

常量 变量 属性 函数或则类

命名规则

必须以字母,_ ,美元符开头(不能用数字开头,是需要注意的地方)

保留字

所有的保留字

可选的分号

JavaScript使用分号(;)分隔语句

如果二条语句写在二行,通常可以省略他们之间的分号

注意

return
true

JavaScript会认为
return;true;e

但是我们
return true;

JavaScript有一套基本规则,规定如何去使用这门语言

2. JS的书写

JS代码可以直接写在script标签里面,或者写在其他的.js后缀文件中,并通过script标签引入。注意:在引入js文件的script里面,一定不能写js代码。

也可以在标签内写js代码,但是这种方式并不推荐。

  1. 一般把script标签写在 head 或者 body 里
  2. 要注意的是是否需要加上window.onload
  3. 如果没有特殊要求,一般script标签放在body结束之前

每个浏览器内部都已经内置了一个JS解释器,因此我们的电脑都有一个或者多个运行JS的工具。

1. 在body之前书写

<script type="text/javascript">
			// alert("你好,js")  // 弹窗 JS单行注释,多行注释用 /* */
			// console.log('你好 console')  // 在终端弹出窗口
			// 以上这个两个可以弹出信息,类似与python中的print,当代码报错时,是不会的执行后面的内容
</script>

2. 在head中书写

<script type="text/javascript">
			// 代码写在head中的script标签里面
			alert('head js')
			// 正常情况下,js从上往下运行,如果需要js在之后再运行,那么需要加上window.onload
			// window.onload = function(){
			// 	alert('head in js')
			// }
</script>

3. 在js文件中书写

// 在js文件中书写js代码
alert('index.js')

原因:

  1. 受到浏览器渲染机制影响 :

img

  1. 引用类型数据传址,基本数据类型传值

把代码中的 console.log()看做一个函数,那 console.log(a),就相当于是将a这个对象传给了这个函数,而在你重新给a.innerhtml 赋值之后也会改变原有的对象,所以 你直接console a 的时候 是修改了的数值 222

console.log(a.innerhtml)的时候,传进来的是一个基本数据 字符串,这时候 他只单纯的传值 对原有的数据并不会有影响 所以你从这块的console拿到的就还是

2. JS获取元素

在js中想要操作元素,或者说执行一些行为,首先需要获取到对应的元素。才能进行下一步的操作,所以要首先学会如何获取元素。那么JS如何操作页面。其实,要操作页面,就是操作标签,JS要操作标签,就要先获取标签。

1. JS获取独有标签:

  • document . title

  • document . head

  • document . body

    // = 赋值的意思,通常要用赋值的形式
    document.title = '这个是修改标题'
    // 在修改别的标签,得用innerHTML(会解标签),innerText(不会解忻标签)
    document.body.innerHTML = '<h1>hello the world</h1>'
    document.body.innerText = '<h1>hello the world</h1>'
    

2. 其他标签的获取

  1. 通过id获取元素-id

    1. document.getElementById(“idname”);
    <div id='dv1'>不笑运气差,一笑就脸大。</div>
    <script type="text/javascript">
      // var 定义变量 变量名不能是关键字,也不是保留字
      var oDv = document.getElementById('dv1')
    	// alert(oDv)
    	oDv.innerHTML = "不想听大道理,只想吃小雪糕。"
    </script>
    
  2. 通过class获取元素-class

    1. document.getElementsByClassName(“classname”);
    <div class='box'>长大是一件把哭声调成静音的事情。</div>
    <div class='box'>希望所有事情都像长胖一样简单。</div>
    <script type="text/javascript">
      var aBox = document.getElementsByClassName("box")
      // alert(aBox.length)  // 打印长度
      aBox[0].innerHTML = '<b>谁还没个擅长的乐器啊!我退堂鼓打的可棒了!</b>' 
      // 当不唯一时,需要使用下标,下标从0开始
    </script>
    

    1.通过id获取DOM元素的方法:document.getElementById(“id名”)

    2.通过class获取DOM元素的方法:document.getElementsByClassName(“class名”)

    从函数的名字可以知道,通过getElementsByClassName获取到的是一个数组,包括多个DOM元素,所以要执行DOM元素的方法,必须加一个索引,比如document.getElementsByClassName(“class名”)[0]。

    而由于id是唯一的,所以通过getElementById只有一个DOM元素,可以直接调用DOM方法。

  3. 通过标签名获取元素-tagName

    1. document.getElementsByTagName(“tagdem”);
    <div id='dv1'>不笑运气差,一笑就脸大。</div>
    <div class='box'>长大是一件把哭声调成静音的事情。</div>
    <div class='box'>希望所有事情都像长胖一样简单。</div>
    <script type="text/javascript">
      var aDiv = document.getElementsByTagName("div")
      // alert(aDiv.length)
      aDiv[0].innerHTML = '<b>闹钟的作用大概就是,让我换个姿势继续睡。</b>'
      // 标签同样也是多个,也需要用下标去取
    </script>
    
  4. 表单中的name

    1. document.getElementsByName(“name”); 通过 name的属性获取元素,一般用于input
  5. selector选择器(不兼容IE7及以下)

    1. document.querySelector (“”); 通过CSS选择器获取一个
    2. document.querySelectorAll(“”); 通过CSS选择器获取所有
    <div id="dv2">
      <p>
        <i>只要活着,就一定能遇见好吃的。</i>
      </p>
      <i class="ibox">我低下了头,并不是认输,而是我在找钱。</i>
    </div>
    <script type="text/javascript">
      // 类似于CSS的选择器来选择,这里只会选择一个
      var oI = document.querySelector("#dv2 i")
      oI.innerHTML = "生活不仅有甜头,还有肉吃"
      // 选择所有的,具体指定的时候,就需要用下标
      var aI = document.querySelectorAll("#dv2 i")
      aI[1].innerHTML = "别对我大呼小叫,我小时候被狗吓过。"
    </script>
    
  6. id前面必须是document,其他的前面可以是某个元素(id, document), 但不能是集合

<div id="box">
  <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
  </ul>
</div>
<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
</ul>
<script type="text/javascript">
  var oBox = document.getElementById("box")
  // alert(oBox) // 对于ID的获取,必须是document开头
  var aLi = oBox.getElementsByTagName("li")
  // alert(aLi.length)

  // 获取元素,只要是一个确定的标签即可
  var aUl = document.getElementsByTagName("ul")
  var aLi = aUl[1].getElementsByTagName("li")
  // alert(aLi.length)
</script>

3. JS简单事件

所谓事件,是指JavaScript捕获到用户的操作,并做出正确的响应。
在事件函数里而,有一个关字this,代表当前发事件的这个元素
事件:用户的操仵
元素,事件=函数;

鼠标事件:

  • 左键单击 onclick

  • 左键双击 ondblctick

  • 鼠标移入 onmouseover/onmouseenter

  • 鼠标移出 onmouseout/onmouseleave

    <style type="text/css">
      .dv1{
        width: 200px;
        height: 200px;
        background: #D2691E;
      }
    </style>
    
    <div class="dv1"></div>
    
  • <script type="text/javascript">
      var aDv = document.getElementsByClassName("dv1")
    	aDv[0].onclick = function(){
      // aDv[0].innerHTML = "点击完成了"
      this.innerHTML = "点击完成了" // this 代表发生事件的元素
    	}
      aDv[0].onmouseenter = function(){
        this.innerHTML = "鼠标移入"
      }
      aDv[0].onmouseleave = function(){
        this.innerHTML = "鼠标移出"
      }
    </script>
    

4. JS修改样式

1. JS修改样式注意项

js可以修改规范和不规范的标签

  • 规范的标签属性: . 符号直接操作(可读可写)
  • 不规范(自定义)的标签属性:
    • 获取: .getAttribute() 方法返回指定属性名的属性值。
    • 设置: .setAttribute()方法设置 属性
    • 移除: .removeAttribute()方法 删除属性

其次:

  1. 所有的路径、颜色 获取的结果不一定是你写的内容
  2. 通过id获取的元素赋值给变量后,假设修改了id,这个变量还是表示这个元素
  3. 自定义标签属性的操作方式,同样可以操作符合规范的标签属性
<a href="https://ke.qq.com/" id="box" class="wrap" target="_blank">腾讯课堂</a>

<script type="text/javascript">
  var oA = document.getElementById("box")
  // alert(oA.id) // 可读性:可以看到属性值
  // alert(oA.target)
  // alert(oA.className) // 查看class需要使用className才行
  // oA.target = "_self" // 可写性:只要是规范的标签,都可写
</script>

2. JS修改样式-行间样式

大部分情况下,JS修改的都是属性的行间样式,因此优先级很高

<style type="text/css">
.box{
  width: 200px;
  height: 200px;
  background: #87CEEB;
}
</style>

html部分

<div class="box"></div>
<script type="text/javascript">
  var aBox = document.getElementsByClassName("box")
  // 获取标签之后,可以直接更改样式中的属性
  // aBox[0].style.width = "300px"
  // 也可以和响应事件组合起来用
  aBox[0].onclick = function (){
    // 使用cssText 可以同时修改多个
    aBox[0].style.cssText= "width: 300px; height: 300px;"
  }
  // 对于有-号连接的属性,改成驼峰命名的规则
  // aBox[0].style.marginLeft = "100px"
  aBox[0].style["margin-top"] = "100px"
  var mleft = "margin-left"
  aBox[0].style[mleft] = "100px" 
  // style[] 可以是变量也可以是字符串
</script>

5. JS数据类型

js七大数据类型:

  1. number: 数字,在js里面的小数和整数统一都是数字 -2^53 ~ 2^53 超出范围之后进度就会不准确
  2. string:字符串
  3. boolean:布尔值(true、false)
  4. null:空值
  5. undefined:为定义,一个变量声明之后没有赋值就是undefined
  6. object:对象
  7. symbol 符号

在js里面null属于对象类型 特殊常量,但是它不具有很多对象的共性,所以很多资料将它归为单一类的数据类型null

作业

  1. 有两个输入框,一个是属性,一个属性值,点击确定之后,改变div的样式
<style type="text/css">
  div{
    margin-bottom: 25px;
  }
  div input{
    height: 30px;
    margin-left: 10px;
    margin-bottom: 5px;
    padding-left: 10px;
  }
  div input[type=button]{
    width: 130px;
    margin-left: 30px;
    padding-left: 0px;
  }
  .box{
    width: 200px;
    height: 200px;
    background: indianred;
    text-align: center;
    line-height: 200px;

  }
</style>

<div>&emsp;性:<input type="text" name="attribute" id="" value="" placeholder="请输入你的属性"/><br>
  属性值:<input type="text" name="attvalue" id="" value="" placeholder="请输入属性值"/>
</div>
<div>
  <input type="button"  value="设置属性" />
</div>
<div class="box">
  javascript也很有意思
</div>
<script type="text/javascript">
  var aInput = document.getElementsByTagName("input");
  // alert(aInput.length)
  var aBox = document.getElementsByClassName("box");
  // alert(aBox)
  aInput[2].onclick = function(){
    var key = aInput[0].value;  // 必须要用点击时间,否则一加载就会运行
    var val = aInput[1].value;
    // alert(key);
    // alert(val);
    aBox[0].style[key] = val; // 注意变量名不能加引号

    aInput[0].value = ""; // 可以清空它的值
    aInput[1].value = "";
  }

</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值