鱼C论坛

 找回密码
 立即注册
查看: 2737|回复: 7

[已解决]为何报错?

[复制链接]
发表于 2022-3-31 18:30:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 小黄练编程 于 2022-3-31 19:57 编辑
<!DOCTYPE html>
<html>
        <head>
                <meta charset="utf-8">
                <title></title>
                <style>
        ul li{
                position:relative;
                background-color:red;
                height:40px;
        }
        button{
                position:absolute;
                top:0;
                right:0;
                display:inline-block;
                /* width:100px; */
                
        }
        </style>
        </head>
        <body>
                <textarea id='text'>请在此留言</textarea>
                <input id='ipt' type='button'  value='发布留言'>
                <ul>
                        <li>你好!<button>删除</button></li>
                        <li>你好!<button>删除</button></li>
                        <li>美好的一天<button>删除</button></li>
                </ul>
                <script>
                var text=document.querySelector('#text');
                var ipt=document.querySelector('#ipt');
        var ul=document.querySelector('ul');
                
                text.onfocus=function(){
                        if(this.value=='请在此留言'){
                                this.value='';
                        }
                }
                text.onblur=function(){
                        if(this.value==''){
                                this.value='请在此留言';
                        }
                }
                ipt.onclick=function(){
                        //创建好一个新节点
                        var lili=document.createElement('li');
                        if(text.value!==''){
                        lili.innerHTML=text.value;
                        
                        //将创建好的新节点添加到ul的第一个子元素前面。
                        ul.insertBefore(lili, ul.children[0]);
                        
                        //执行完前面的操作后将textarea的value值改为'';
                        text.value='';
                        }
                }
                //给li里的按钮绑定删除事件
                var  lis=ul.children;
                var  deleat=lis[0].children[0];//这里不可以写成lis,因为lis代表一个数组。
                var deleat=[];
                for(var i=0;i<lis.length;i++){
                        deleat[i]=lis[i].children[0];
                                lis[i].setAttribute('index',i);
                            deleat[i].onclick=function(){
                                
//那个按钮点击,删除相应的li,即ul里的第几个元素。
                                ul.removeChild(ul,children[lis[i].index]);
                        }
                }
                
                
                </script>
        </body>
</html>
最佳答案
2022-3-31 20:23:08

不知道你要实现什么,前面回复你了闭包中无法直接传i进去,你偏偏还是要这么传个i进去。
用的的代码修改处,自已参考。
                //给li里的按钮绑定删除事件
                var  lis=ul.children;
                for(var i=0;i<lis.length;i++){
                        var deleat=lis[i].children[0];
                        lis[i].setAttribute('index',i); // 给li添加属性index                               
                        deleat.onclick=function(){
                            j = this.parentNode.getAttribute('index'); // 获取li属性index的值
                            lis[j].removeChild(lis[j].children[0]);
                        }
                }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-31 18:33:28 | 显示全部楼层
代码上全,方便人家调试。
你太看得起大家了,反正我是光看看不出问题来。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-31 19:49:26 | 显示全部楼层
ba21 发表于 2022-3-31 18:33
代码上全,方便人家调试。
你太看得起大家了,反正我是光看看不出问题来。

整好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-31 19:57:43 | 显示全部楼层
ba21 发表于 2022-3-31 18:33
代码上全,方便人家调试。
你太看得起大家了,反正我是光看看不出问题来。

刚改了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-31 20:23:08 | 显示全部楼层    本楼为最佳答案   

不知道你要实现什么,前面回复你了闭包中无法直接传i进去,你偏偏还是要这么传个i进去。
用的的代码修改处,自已参考。
                //给li里的按钮绑定删除事件
                var  lis=ul.children;
                for(var i=0;i<lis.length;i++){
                        var deleat=lis[i].children[0];
                        lis[i].setAttribute('index',i); // 给li添加属性index                               
                        deleat.onclick=function(){
                            j = this.parentNode.getAttribute('index'); // 获取li属性index的值
                            lis[j].removeChild(lis[j].children[0]);
                        }
                }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-31 23:02:13 | 显示全部楼层
ba21 发表于 2022-3-31 20:23
不知道你要实现什么,前面回复你了闭包中无法直接传i进去,你偏偏还是要这么传个i进去。
用的的代码修改 ...

大哥,咋才能学好前端啊,需要注意些什么,以后几年那些技术会过时,例如,两三年后可以放心用新特性吗,不用考虑兼容性的问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-31 23:30:31 | 显示全部楼层
小黄练编程 发表于 2022-3-31 23:02
大哥,咋才能学好前端啊,需要注意些什么,以后几年那些技术会过时,例如,两三年后可以放心用新特性吗, ...

慢慢学
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-31 23:44:55 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 16:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表