Blogger Information
Blog 28
fans 0
comment 0
visits 26822
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
id,class,标签和css选择器获取元素的方法及在线聊天机器人
YHF的博客
Original
1454 people have browsed it

一 、id选择器获取元素的方法:

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>根据id选择元素</title>
</head>
<body>
<ul>
    <li id="item1">列表01</li>
    <li id="item2">列表02</li>
    <li id="item3">列表03</li>
    <li id="item4">列表04</li>
    <li id="item5">列表05</li>
</ul>
</body>
</html>
<script>
    //使用id属性获取元素
    let item1=document.getElementById('item1');
    let item2=document.getElementById('item2');
    let item3=document.getElementById('item3');
    //设置元素的样式
    item1.style.color='red';
    item2.style.backgroundColor='green';
    item3.style.fontSize='1.5rem';
    item3.style.color='yellow';
    //如果需要使用多个id来获取元素,可以通过函数来简化操作
    function getElements(){//参数是多个id字符串
        let elements={};//创建一个空的map映射对象来保存结果
        for (let i=0; i<arguments.length;i++){
            let id =arguments[i];//获取到要查询的每个id
            let elt=document.getElementById(id);//根据id查找元素
            if(elt===null){
                throw new Error('NO element with id:' + id)//跑出异常
            }
            elements[id]=elt;//将获取到的元素存入到映射数据中
        }
        return elements;
    }
    //获取页面上指定的id属性的元素,返回一个关联数组类型的对象,键名就是id的值
    let elements = getElements('item4','item5');
    for (let key in elements){
        elements[key].style.backgroundColor='blue';
    }
</script>

运行实例 »

点击 "运行实例" 按钮查看在线实例

二、class来获取元素

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>通过class属性选取元素</title>
</head>
<body>
<ul class="ul">
    <li class="one">列表项1</li>
    <li>列表项2</li>
    <li class="three">列表项3</li>
    <li>列表项4</li>
    <li class="five fivetwo">列表项5</li>
</ul>
</body>
</html>
<script>
    //根据元素的class属性值来获取元素
    let one=document.getElementsByClassName('one');
    console.log(one);//返回一个html元素集合,与根据标签名获取的返回数据类型完全一样
    one[0].style.backgroundColor='red';
    one.item(0).style.backgroundColor='green';

    //该方法也支持在父元素上调用
    document.getElementsByClassName('ul').item(0)
            .getElementsByClassName('three')[0]
            .style.backgroundColor='green';
    //支持多个class属性值
    let five=document.getElementsByClassName('five fivetwo')[0];
    five.style.backgroundColor='green';
    five.style.fontSize='1.3rem';
</script>

运行实例 »

点击 "运行实例" 按钮查看在线实例

三、通过标签获取元素

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>根据标签名来获取元素</title>
</head>
<body>
<ul>
    <li>列表项1</li>
    <li>列表项2</li>
    <li>列表项3</li>
    <li>列表项4</li>
    <li>列表项5</li>
</ul>
</body>
</html>
<script>
    //getElementsByTagName(),根据标签名称获取元素集合,有length属性,可以当数组来访问
    let ul=document.getElementsByTagName('ul')[0];
    ul.style.backgroundColor='skyblue';
    //元素集合也是一个对象,上面定义了一个方法,item()也可以获取指定元素
    let ul1=document.getElementsByTagName('ul').item(0);
    ul1.style.backgroundColor='yellow';
    //获取所有的li元素
    let li =document.getElementsByTagName('li');
    console.log(li);//返回一个html元素集合 :HTMLCollection
    for(let i=0; i<li.length;i++){
        li[i].style.backgroundColor='pink';
    }

    //getElementsByTagName()不仅在document对象上有定义,在Element元素对象上也有定义
     let ul2=document.getElementsByTagName('ul').item(0);//获取ul
    let item2=ul2.getElementsByTagName('li').item(2);//在父元素上调用该方法,获取ul中的第三个列表
    item2.style.backgroundColor='red';
</script>

运行实例 »

点击 "运行实例" 按钮查看在线实例

四、通过css选择器来获取元素

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>使用css选择器来获取元素</title>
</head>
<body>
<ul class="ul">
    <li class="one">列表项1</li>
    <li class="two">列表项2</li>
    <li class="two">列表项3</li>
    <li class="four">列表项4</li>
    <li class="five fivetwo">列表项5</li>
</ul>
</body>
</html>
<script>
    //我们选择页面元素的时候,大多使用css选择器来获取元素,例如
    //.one 来获取class="one"的元素,其实js也支持使用css选择器获取元素
    let lists=document.querySelectorAll('li');
    console.log(lists);//返回节点列表数组,里面没个元素对应一个元素
    //可以使用
    lists.item(0).innerHTML='我是新的列表项一';
    lists[1].style.fontSize='1.5rem';
    //该方法还可以在元素上调用,这也根据标签和class类名获取元素是一样的
    let ul=document.querySelector('.ul');//获取满足条件的第一个元素
    console.log(ul);//只返回ul列表元素以及内部子元素
    let li=ul.querySelector('.one');
    console.log(li);
    let lil=ul.querySelectorAll('.two');
    for (let i=0;i<lil.length;i++){
        lil[i].style.backgroundColor='blue';
    }
</script>

运行实例 »

点击 "运行实例" 按钮查看在线实例

五、在线聊天机器人(插入代码功能无法使用,采用文本书写)

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>DOM实战:模拟智能在线***系统</title>
   <style type="text/css">
       div:nth-child(1){
           width: 450px;
           height: 650px;
           background-color: #78b5e5;
           margin:30px auto;
           border-radius:15px;
           color:#333;
           box-shadow:2px 2px 2px #808080;
           /*阴影*/
}
       h2{
           text-align:center;
           margin-bottom:-10px;
       }
       div:nth-child(2){
           width: 400px;
           height: 500px;
           border:4px double green;
           background-color: #ffffff;
           margin: 20px auto 10px;
       }
       ul{
           list-style:none;
           line-height:2em;
           overflow:hidden;
           padding:15px;

       }
       li{
           margin: 5px;
       }
       table{
           width: 90%;
           height: 80px;
           margin:auto;
       }
       textarea{
           border:none;
           resize:none;
           background-color:lightcyan;
       }
       button{
           width: 60px;
           height: 40px;
           background-color:#f8efc0;
           color:#122b40;
           border:none;
           border-radius:5px;
       }
       button:hover{
           background-color:#000000;
           color:white;
       }
       span{
           margin: 0;
       }
   </style>
</head>
<body>
   <div class="total">
       <h2>在线***</h2>
       <div class="header" contenteditable="true">
           <ul>
               <li></li>
           </ul>
       </div>
       <table>
           <tr>
               <td align="right"><textarea name="text" cols="50" rows="4"></textarea></td>
               <td align="left"><button type="button">发送</button></td>
           </tr>
       </table>
   </div>

</body>
</html>
<script>
   let btn=document.getElementsByTagName('button')[0];
   let text=document.getElementsByName('text')[0];
   let list=document.getElementsByTagName('ul')[0];
   let sum=0;
   //添加按钮点击事件,获取用户数据并推送到对话窗口中
btn.onclick=function(){
       // alert(text.value);
       //获取用户提交的内容
if(text.value.length===0){
           alert('请输入内容后再发送');
           return false;
       }
       let userComment=text.value;
       //立即清空用户信息区
text.value='';

       //创建一个新节点
let li=document.createElement('li');
       li.innerHTML=userComment;//将用户输入的内容添加到新节点中
let userPic='<img src="inc/4.jpg" width="30" style="border-radius:50%; vertical-align: middle;">';//设置用户头像
li.innerHTML=userPic + '  ' + userComment;//讲用户头像与内容合并
list.appendChild(li);
       sum+=1;//聊天记录自增1

       //设置定时器,默认2秒后自动回复
setTimeout(function(){
           let info=[
               '真烦人,有话快说,别耽误我玩抖音',
               '除了退货,退款,咱们什么都可以聊',
               '说啥,本姑娘怎么听不懂呢?再说一遍',
               '在我方便的时候再回复你吧~~',
               '投诉我的人多了,你算老几~~~'
];
           let temp=info[Math.floor(Math.random()*3)];
           //取1-5之间的一个整数:Math.floor(Math.random()*6+1)
let reply=document.createElement('li');
           let kefuPic='<img src="inc/3.jpg" width="30" style="border-radius:50%;vertical-align: middle;">';
           //reply.innerHTML='你有事么?'+kefuPic
reply.innerHTML=kefuPic+'  '+'<span style="color:red;" >'+temp+'</span>';
           list.appendChild(reply);
           sum+=1;
       },2000);

       //当聊天记录达到10条时清空窗口
if(sum>10){
           list.innerHTML='';
           sum=0;
       }
   }
</script>

1.jpg


Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post