搜索
博主信息
博文 28
粉丝 0
评论 0
访问量 32352
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
id,class,标签和css选择器获取元素的方法及在线聊天机器人
YHF的博客
原创
1672人浏览过

一 、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


批改状态:未批改

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学