webApi第一天

129 阅读2分钟

webApi第一天

概念

一套可以直接操作页面元素的代码,使用js去操作html和浏览器

分类

Dom

文档对象模型

DOM是浏览器提供的一套专门用来 操作网页内容 的功能(浏览器根据标签自动生成了对应js对象)

可以让我们通过js的方式很方便的控制页面标签

Bom

浏览器对象模型

获取Dom元素

获取一个dom元素

document,querySelector

<body>
    <div class="box">我是div元素</div>
    <span>我是span元素</span>
    <p id="p1">我是p元素</p>

    <script>
        let divDom = document.querySelector('.box')
        console.dir(divDom)

        let spanDom = document.querySelector('span')
        console.dir(spanDom)

        let pDom = document.querySelector('#p1')
        console.log(pDom)
    </script>
</body>

获取数组

document,querySelectorAll

<body>
    <ul>
        <li>0</li>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </ul>

    <script>
        //获取所有的li标签  返回一个伪数组
        let lis = document.querySelectorAll('li')
        for (let index = 0; index < lis.length; index++) {
            lis[index].innerText = `这是第${index}个li`
        }
        console.log(lis);
    </script>

---其他获取Dom元素方式

1649168023262.png

设置文本内容

1.document.weite

只能在body标签中些内容 以后很少用!

2.Dom元素.innerText='文本'

设置标签的文本内容

3.Dom元素.innerHTML='文本'

不仅可以设置文本内容 还可以添加标签

body>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>
    <script>
        document.write(`<h1>大漂亮</h1>`)

        document.querySelector('li:nth-child(3)').innerText='<button>大漂亮</button>'

        document.querySelector('li:nth-child(5)').innerHTML='<button>大聪明</button>'
        /* 
        三种实现在标签中动态设置文本的方式
        1. document.write  智能在body标签中书写  以后很少使用它
        2. innerText 只能设置文本, 不能解析html字符串
        2. innerHTML 既能设置文本, 也能解析html字符串
        */
    </script>
</body>

设置元素样式

1.Dom元素.style

给元素添加行内样式

<body>
    <div></div>
    <script>
        let divDom = document.querySelector('div')
        divDom.innerText=prompt(``)
        divDom.style.color='orange'
        divDom.style.backgroundColor='pink'
        divDom.style.fontSize='23px'
        divDom.style.height='50px'
        divDom.style.textAlign='center'
        divDom.style.lineHeight='50px'
    </script>
</body>

2.Dom元素.className

给元素添加样式类名(会先清空这个dom的元素 旧的所有的类名 然后再单独添加上 新的类名,如果想要同时设置多个 class 以空格做分割即可 )

<style>
        .box {
            width: 300px;
            height: 300px;
            background-color: blue;
            font-size: 20px;
            margin: 100px auto;
            text-align: center;
            line-height: 300px;
        }
        .box1 {
            width: 500px;
            border-radius: 50px;
            background-color: orange;
            font-size: 50px;
            color: #fff;
        }
    </style>
</head>
<body>
    <div>大漂亮</div>
    <script>
        /* className 
    会先清空这个dom的元素 旧的所有的类 然后再单独添加上 新的类 
    如果想要同时设置多个 class  以空格做分割即可 */
        let divDom = document.querySelector('div')
        divDom.className = 'box box1'
    </script>
</body>

3.Dom元素.classList

给元素添加,删除样式类名

添加---Dom元素.classList.add('类名1'.'类名2',...)

删除---Dom元素.classList.remove('类名')

切换---Dom元素.classList.toggle('类名')

<style>
        .box {
            background-color: orange;
            margin: 100px auto;
        }
        .box1 {
            width: 200px;
        }
        .box2 {
            height: 200px;
        }
        .box3 {
            border-radius: 15px;
        }
        .box4 {
            text-align: center;
            font-size: 50px;
            line-height: 200px;
        }
    </style>
</head>
<body>
    <div class="box box1">千金</div>
    <script>
        let divDom = document.querySelector('div')
        //添加一个,多个类多个需要以逗号分隔
        //divDom.classList.add('box2')
        divDom.classList.add ('box2','box3','box4')
        // 单独来指定移除一个类
        divDom.classList.remove('box1')
         // 切换 (如果本来有,那我就移除  , 如果本来没有,那我就添加)
        divDom.classList.toggle('box1')
    </script>
</body>

表单元素的属性设置

  • 表单很多情况,也需要修改属性,比如点击眼睛,可以看到密码,本质是把表单类型转换为文本框。
  • 正常的有属性有取值的 跟其他的标签属性没有任何区别。

表单属性的总结:

  1. 设置普通的输入框 input.value =“表单的值”

  2. 设置按钮的禁用

    ​ button.disabled = true 禁用

    ​ button.disabled = true 禁用

  3. 设置单选框或者复选框

    radio.checked=true 选中

    checkbox.checked=false 取消选中

  4. 设置下拉列表 select

    option.selected = true 选中

  5. 文本域标签 属于表单元素 又是双标签 。

    获取文本内容:

    获取文本内容可以用 .value 和 innerHTML ,innerText 使用无效。

    想要设置textarea 里面文本内容的时候,用.value 原样获取内容。

    用innerHTML ,获取的内容如果包含html 会转移。

    通过js方式来设置内容:

    textarea.value = `` 都可以使用

    textarea.innerText = `` 都可以使用

    textarea.innerHTML= `` 都可以使用

      <body>
        <!-- 文本框 -->
      <input type="text" class="name">
    
        <!-- 复选框 -->
      <input type="checkbox" class="isarg"> 同意
    
        <!-- 按钮 -->
        <button>发送验证码</button>
    
        <!-- 下拉列表 -->
        <select>
          <option></option>
          <option></option>
          <option></option>
          <option></option>
        </select>
    
        <!-- 文本域 -->
        <textarea><h1>小乖乖</h1></textarea>
      <script>
    //-------------------文本框--------------------------------
        let nameDom = document.querySelector('.name')
        //.innerHTML  innerText 主要是设置双标签的   
        //设置文本框的文本你内容  .value
        nameDom.value = '六一'
    //-------------------复选框--------------------------------
        let isargDom = document.querySelector('.isarg')
        //多选框 选择或者取消选择   .checked
        isargDom.checked = true; //选择  
        // isargDom.checked = false; //取消选择
    //--------------------按钮-------------------------------
        let btnDom=document.querySelector('button')
        btnDom.disabled= true;// 禁用
        // code.disabled = false; // 启用
    //--------------------下拉列表-------------------------------
        let selDom =document.querySelector('option:nth-child(3)')
        //下拉列表。selected = true
        selDom.selected = true; //选中   false取消选中
    //--------------------文本域-------------------------------
        let areaDom = document.querySelector('textarea')
    
        
          // 在html想要设置  文本域的内容 直接在标签内写即可
          // <textarea>  小乖乖 </textarea>
    
          // 获取文本域中的值
    
    
          // console.log(textarea.value); // 获取 OK <h1>小乖乖</h1>
          // console.log(textarea.innerText); // 获取  不OK
          // console.log(textarea.innerHTML); // 获取   OK  &lt;h1&gt;小乖乖&lt;/h1&gt;
    
    
          // value   有区别  innerHTML
          // 设置 textarea 里面文本的内容的时候
          // 可以选择 在标签内写文本即可
          // 想要获取 内容
          // .value  原样获取内容
          // .innerHTML 获取的内容如果包含html 会转译
    
          // 通过js的方式来设置内容
          // textarea.value=`<h1>标题</h1>`;  //  ok
          // textarea.innerText=`<h1>标题</h1>`; //  ok
          // textarea.innerHTML=`<h1>标题</h1>`;  //  ok
    
      </script>
      </body>
    

定时器

开启(设置)定时器

let timeId = setInterval(函数,间隔事件-单位毫秒)

(定时器会返回一个id)

<script>
        /* 
        //函数负责定时执行的业务
        function getText(params) {
            console.log("千金");
        }

        //每隔一秒执行一次函数
        //时间单位  毫秒  1000毫秒=1秒
        //配合具名函数  函数名后面不用跟括号  加括号表示取返回值!!
        setInterval(getText,1000) */

    //-----配合匿名函数使用
        //setInterval(匿名函数,时间)
        setInterval(function () {
            console.log("千金");
        },1000)
</script>
清除(停止)定时器

clearInterva(timeId)

<script>
        let i = 0 ;
        //创建定时器的同时  返回了定时器ID
        let timeId = setInterval(function () {
            i++;
            console.log('千金',i);
            //判断是否满足条件
            if (i === 120){
                //满足就停止
                clearInterval(timeId)
            }
        },100)
    </script>