当前位置: 首页 > article >正文

二、JS书写位置、输入输出语句、变量常量、数据类型、运算符

CSS美化HTML样式;JS是一种运行在浏览器的编程语言,使网页由静变动。

1. js书写位置

1.1 内部js

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <!-- 引入css -->
</head>
<body>
  <!-- html -->

  <!-- 1. 内部JS 放在</body>上面 -->
  <script>
    // 控制台输出 浏览器控制台输出的字符串和数字颜色不一样(彩色为数字类型)
    console.log('Hello');
    console.log(666);
    
    // 界面弹窗 alert把浏览器界面卡到当前行,不点确定不执行后续代码
    alert('界面弹窗')
    alert(888)
  </script>
</body>
</html>

1.2 外部js

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>

  <!-- 2. 外部js -->
  <script src="./js/02_外部.js">
    // 引入js文件后,script标签内不放代码,会忽略不执行
    alert('引入外部js后script标签内部书写js代码')
  </script>
</body>
</html>
console.log('外部js')
alert('外部js')
document.write('引入外部js')

1.3 行内js

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
  <!-- 3. 行内js 直接写在标签内部 -->
  <!-- JavaScript中行内js不常见,vue框架内比较常见 -->
  <button onclick="alert(666)">按钮</button>
  
  <!-- 双引套双引→报错 外双内单/外单内双/反引号 -->
  <!-- <button onclick="alert("字符串")">按钮</button> -->
  <button onclick="alert('字符串')">按钮</button>
  <button onclick='alert("字符串")'>按钮</button>
  <button onclick="alert(`字符串`)">按钮</button>
</body>
</html>

2. 语句

2.1 输出语句

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <h1>一级标题</h1>
  
  <div class="box">
    div
  </div>

  <div class="father">
    <div>内嵌的div1</div>
    <div>内嵌的div2</div>
  </div>

  <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
  </ul>
  <script>

    alert()
    console.log()

    // document 整个网页文档
    // querySelector 按css选择器找标签(任意选择器)只返回第一个匹配的元素
    // innerHTML 替换html选中标签内的现有内容
    document.querySelector('h1').innerHTML = 'js一级标题'
    document.querySelector('.box').innerHTML = 'js div'
    document.querySelector('.father div').innerHTML = 'js .father里面的div1'
    
    // querySelectorAll返回值为数组
    console.log(document.querySelectorAll('ul li'));
  </script>
</body>
</html>

2.2 输入语句

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
  <script>
    // 确定 保存用户输入的数据到变量name
    // 取消 null
    let name = prompt('请输入用户名')
    document.write(name)
    // 模板字符串
    document.write(`用户输入的内容为${name}`)
  </script>
</body>
</html>

3. 变量常量

3.1 let

3.2 const

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

  <script>
    // Fn+F12 检查→控制台

    let name = 'Tom'
    console.log(name)
    
    // 声明变量名称不能重复
    // let name = ''
    // 变量名称严格区分大小写,不能为关键字 不能数字开头
    let Name = 'Jerry'
    console.log(Name)  

    const PI = 3.14
    console.log(PI)
    
  </script>
</body>

</html>

3.3 var

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
  <script>
    // var 声明变量 ES6之前?已废弃?
    // 问题一:允许先使用后定义
    // 问题二:允许变量名称重复
    console.log(name)
    
    var name = 'Tom'
    var name = 'Jerry'

    // let 未定义变量先使用的话,浏览器控制台报错
    // let声明的变量有块作用域
    // console.log(age);
    let age = 19
    // let 不允许重复变量的声明
    // let age = ''
    console.log(age);
    
  </script>
</body>
</html>

案例1-交换变量值

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

  <script>
    let num1 = 10
    let num2 = 20
    console.log(num1, num2)
    
    console.log('----交换----');
    
    // 临时变量 可不赋初始值
    let temp
    temp = num1
    num1 = num2
    num2 = temp
    console.log(num1, num2)
  </script>
</body>

</html>

案例2-输出用户信息

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>

  <p class="uname"></p>
  <p class="age"></p>
  <p class="sex"></p>

  <!-- 
    变量练习-输出用户信息(同学自行练习)
    需求:让用户输入自己的名字、年龄、性别,再输出到网页
    分析:
    ①:弹出 输入 框(prompt):请输入您的姓名(uname):用变量保存起来。
    ②:弹出输入框(prompt):请输入您的年龄(age):用变量保存起来。
    ③:弹出输入框(prompt):请输入您的性别(sex):用变量保存起来。
    ④:页面分别 输出 (document.querySelectorO、innerHTML) 刚才的 3 个变量。
  -->
  <script>

    // 1. 定义变量 弹出窗口
    let uname = prompt('输入您的姓名')
    // 数字型数据弹出窗口点击取消后 返回值为0
    let age = +prompt('输入您的年龄')
    let sex = prompt('输入您的性别')

    // 2. 输出用户输入的信息
    // document.querySelectorC'css选择器').innerHTML = '设置的内容'
    document.querySelector('.uname').innerHTML = uname
    document.querySelector('.age').innerHTML = age
    document.querySelector('.sex').innerHTML = sex

    // document.write
    document.write(`姓名${uname},年龄${age},性别${sex}`)
  </script>
</body>
</html>

4. 数据类型

4.1 简单数据类型

number、string、boolean、undefined未定义、null空

4.2 复杂数据类型

Object、Function、Array

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

  <!-- 
    JS数据类型整体分为两大类:
    1. 基本数据类型 (简单数据类型)
      number、string、boolean、undefined未定义、null空
    2. 引用数据类型 (复杂数据类型)
      Object、Function、Array
  -->
  <script>
    // number
    let num1 = 10
    console.log(num1);
    console.log(`num1的数据类型为${typeof num1}`)
    // string
    let name = 'Tom'
    console.log(name);
    console.log(`name的数据类型为${typeof name}`)
    // boolean 只有两个值true/false
    let isLogin = true
    console.log(isLogin);
    console.log(`isLogin的数据类型为${typeof isLogin}`)

    // undefined 声明变量但不赋值(JS弱数据类型语言)
    /* 工作使用场景:声明变量等待传送过来的数据,
    可以通过检测这个变量是不是undefined,以此判断用户是否有数据传递过来 */
    let age
    console.log(age);  //undefined
    console.log(`age的数据类型为${typeof age}`)  //undefined

    // null 赋值了但内容为空
    /* null开发中的使用场景:
      官方解释:把null作为尚未创建的对象
      大白话:将来有个变量里面存放的是一个对象,但是对象还没创建好,可以先给个null */
    let obj = null
    console.log(obj);  //null
    console.log(`obj的数据类型为${typeof obj}`)  //object
    // 倒计时发验证码 用定时器 → 类型是对象型 → 用变量保存才能清除定时器

  </script>
</body>

</html>

4.3 字符串 string

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

  <script>
    // 普通字符串不支持换行,换行报错
    let str1 = '普通字符串'
    /* let str1 = '普通
    字符串' */
    console.log(str1)

    // 模板字符串支持换行显示
    let str2 = `模板字符串
    换行`
    console.log(str2)

    // 字符串拼接 + 或 ${}
    // 模板字符串内部支持运算
    let name = 'Tom'
    let age = 18
    console.log(name);
    console.log('+拼接  名字为' + name + ',年龄为' + age);
    console.log(`模板字符串\${}  名字为${name},年龄为${age + 1}`);

  </script>
</body>

</html>

案例3-输出姓名和年龄

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>输出姓名和年龄案例</title>
  <style>
    body {
      background: #f0f2f5;
    }

    .container {
      display: flex;
      align-items: center;
      width: 600px;
      height: 100px;
      margin: 50px auto;
      background-color: #fff;
      border-radius: 5px;
      padding: 10px;
      box-sizing: border-box;
    }

    .container img {
      width: 50px;
      height: 50px;
      border-radius: 50%;
      margin-right: 10px;
    }

    .container .info {
      flex: 1;
    }

    .container p {
      line-height: 1;
    }

    .container #job {
      color: #697086;
    }
  </style>
</head>

<body>
  <div class="container">
    <img src="./images/28.jpg" alt="">

    <div class="info">
      <p>江苏传智播客教育科技股份有限公司</p>
      <p id="job">总裁办 | 张三 38岁</p>
      <!-- id选择器在调用时 #id名字 -->
    </div>
  </div>

  <script>
    // 需求:页面弹出对话框,输入名字和年龄,页面显示:员工信息
    let name = prompt('输入名字')
    let age = prompt('输入年龄')
    document.querySelector(`#job`).innerHTML = `总裁办 | ${name} ${age}岁`
  </script>
</body>

</html>

5. 运算符

5.1 算数运算符

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

  <script>
    let num1 = 9
    let num2 = 4
    
    console.log(num1 + num2); //13
    console.log(num1 - num2); //5
    console.log(num1 * num2); //36
    console.log(num1 / num2); //2.25
    console.log(num1 % num2); //1
  </script>
</body>

</html>

案例4-商品小计

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>计算商品小计案例</title>
  <style>
    .media {
      width: 600px;
      margin: 50px auto;
      display: flex;
      align-items: flex-start;
      background-image: url(./images/bg_banner.png);
      background-repeat: no-repeat;
      padding: 1.2rem 1.2rem 1rem 1.2rem;
      border-radius: 0.25rem 0.25rem 0 0;
      box-shadow:
        2.5px 5.1px 5.3px rgba(0, 0, 0, 0.036),
        8.5px 17.2px 17.9px rgba(0, 0, 0, 0.054),
        38px 77px 80px rgba(0, 0, 0, 0.09);
    }

    .media h4 {
      font-size: 20px;
    }
  </style>
</head>

<body>
  <div class="media">
    <h4 id="title">
      商品单价:100元, 购买数量:2, 总计:¥200
    </h4>
  </div>

  <script>
    // 需求:用户输入商品价格和数量,可以计算出小计,显示到页面中
    let price = prompt('输入商品价格')
    let count = prompt('输入商品数量')
    let money = price * count
    document.querySelector('h4').innerHTML = `商品单价:${price}元, 购买数量:${count}, 总计:¥${money}`
  </script>
</body>

</html>

5.2 赋值运算符

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
  <script>
    let age = 18
    console.log(age);
    
    age  += 1
    console.log(age)
  </script>
</body>
</html>

案例5-商品订单信息页面

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>综合案例-商品订单信息页面</title>
  <style>
    .title {
      text-align: center;
      color: #3e3e3e;
    }

    .order {
      /* 合并相邻边框 */
      border-collapse: collapse;
      height: 80px;
      margin: 0 auto;
      text-align: center;
      border-radius: 10px 10px 0 0;
      overflow: hidden;
    }

    /* 给行添加渐变背景颜色 */
    .order tr:nth-child(1) {
      background-image: linear-gradient(to right, #f46e33, #f057a5);
    }

    .order tr:nth-child(2) {
      background-image: linear-gradient(to right, #fdf0eb, #fdeff6);
    }

    .order tr:nth-child(2) :last-child {
      color: #f282bb;
    }

    .order th {
      padding: 5px 50px;
      color: #fff;
    }

    .order,
    th,
    td {
      border: 1px solid #fff;
      line-height: 50px;
    }
  </style>
</head>

<body>
  <h2 class="title">订单详情页面</h2>
  <div id="container">
    <table class="order">
      <tr>
        <th>商品名称</th>
        <th>商品价格</th>
        <th>商品数量</th>
        <th>总价</th>
        <th>收货地址</th>
      </tr>
      <tr>
        <td>小米青春版PLUS</td>
        <td>1900元</td>
        <td>2</td>
        <td>3800元</td>
        <td>黑马程序员</td>
      </tr>
    </table>
  </div>

  <script>
    // 需求:用户输入商品价格和商品数量,以及收货地址,可以自动打印订单信息

    // 1. 用户输入
    let price = prompt('输入商品价格')
    let num = prompt('输入商品数量')
    let address = prompt('输入收货地址')

    // 2. 页面输出
    document.querySelector('tr:nth-child(2)').innerHTML = `
      <td>小米青春版PLUS</td>
      <td>${price}元</td>
      <td>${num}</td>
      <td>${price * num}元</td>
      <td>${address}</td>
    `

    /* document.querySelector('tr:nth-child(2) td:nth-child(2)').innerHTML = `${price}元`
    document.querySelector('tr:nth-child(2) td:nth-child(3)').innerHTML = `${num}`
    document.querySelector('tr:nth-child(2) td:nth-child(4)').innerHTML = `${price * num}元`
    document.querySelector('tr:nth-child(2) td:nth-child(5)').innerHTML = `${address}` */

    /* document.write(`
        <div id="container">
      <table class="order">
        <tr>
          <th>商品名称</th>
          <th>商品价格</th>
          <th>商品数量</th>
          <th>总价</th>
          <th>收货地址</th>
        </tr>
        <tr>
          <td>小米青春版PLUS</td>
          <td>${price}元</td>
          <td>${num}</td>
          <td>${price * num}元</td>
          <td>${address}</td>
        </tr>
      </table>
    </div>
      `) */
  </script>
</body>

</html>

6. 作业

6.1 获取用户信息

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
  <!-- 
    题目描述
    依次询问并获取用户的姓名、年龄、性别,收集数据之后在控制台依次打印出来。
  -->
  <script>
    // 1. 用户输入
    let name = prompt('请输入您的姓名:')
    let age = prompt('请输入您的年龄:')
    let sex = prompt('请输入您的性别:')

    // 2. 控制台打印
    console.log(`用户的姓名:${name}`);
    console.log(`用户的年龄:${age}`);
    console.log(`用户的性别:${sex}`);
  </script>
</body>
</html>

6.2 增加年龄

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
  <!-- 
    题目描述
    1、询问用户年龄,用户输入年龄后,把用户输入的年龄增加5岁
    2、增加5岁后,通过弹出框提示用户“据我估计,五年后,你可能XX岁了"
  -->
  <script>
    let age = +prompt('你现在多少岁了?')
    age+=5
    alert(`据我估计,五年后,你可能${age}岁了`)
  </script>
</body>
</html>

6.3 计算银行卡余额

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    body{
      text-align: center;
    }
    table{
      border: 1px solid #000;
      margin: 0 auto;
      border-collapse: collapse;
    }
    th,td{
      border: 1px solid #000;
      padding: 5px 50px;
    }
  </style>
</head>

<body>

  <h2>2020年12月消费支出</h2>
  <table>
    <tr>
      <th>银行卡余额</th>
      <th>水费</th>
      <th>电费</th>
      <th>网费</th>
      <th>银行卡余额</th>
    </tr>
    <tr>

    </tr>
  </table>

  <!-- 
    题目描述
    1、用户输入总的银行卡金额,依次输入本月花费的电费,水费,网费。
    2、页面打印一个表格,计算出本月银行卡还剩下的余额。
  -->
  <script>
    let totalAmount = +prompt('请输入银行卡总额:')
    let electricityBill = +prompt('请输入本月花费的电费:')
    let waterBill = +prompt('请输入本月花费的水费:')
    let internetBill = +prompt('请输入本月花费的网费:')
    let balance = totalAmount - electricityBill - waterBill - internetBill

    document.querySelector('tr:nth-child(2)').innerHTML = `
      <td>${totalAmount}元</td>
      <td>${electricityBill}元</td>
      <td>${waterBill}元</td>
      <td>${internetBill}元</td>
      <td>${balance}元</td>
    `
  </script>
</body>

</html>


http://www.kler.cn/a/396042.html

相关文章:

  • 蓝队技术学习
  • Android Osmdroid + 天地图 (二)
  • 从0开始学习机器学习--Day26--聚类算法
  • Flink Job更新和恢复
  • flink cdc 应用
  • kubesphere环境-本地Harbor仓库+k8s集群(单master 多master)+Prometheus监控平台部署
  • 去中心化治理的实现:Web3的区块链新玩法
  • 笔记--(网络服务2)、DHCP原理与配置
  • Django SQL 查询优化方案:性能与可读性分析
  • 记录日志中logback和log4j2不能共存的问题
  • 计算机图形学在游戏开发中的应用
  • 浅层神经网络
  • 机器学习 决策树
  • 【深度学习基础】PyCharm anaconda PYTorch python CUDA cuDNN 环境配置
  • sql数据库-排序查询-DQL
  • Elasticsearch retrievers 通常与 Elasticsearch 8.16.0 一起正式发布!
  • Java---图书管理系统
  • Git回到某个分支的某次提交
  • 【Node-Red】使用文件或相机拍摄实现图像识别
  • CSS盒子的定位> (下篇)#固定定位#笔记
  • Java基础知识03(内部类)【24.11.25】
  • nodejs和npm在gitbash中提示Not Found情况的解决办法
  • 嘉立创EDA 画PCB板子经验总结(二)
  • Windows系统 ElasticSearch,Kibana安装
  • 使用spring操作redis
  • idea使用技巧和推荐插件