鼠标点击button添加div,点击对于button删除最后的一个元素。以此类推

dome要点:
1、父级元素宽高固定,内容超出则显示滚动条;
2、点击添加时,新增加div;
3、图片上传(单张图)功能;
4、文本框使用textarea标签,并去除一些默认样式

<!DOCTYPE>
<html>
<head>
    <title>108</title>
    <meta charset="UTF-8">
    <script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>

    <style>
        .box {
            margin: 0 auto;
            border: 1px solid #b0d4e3;
            width: 500px;
            height: 600px;
            /*Y轴导航条*/
            overflow-y: auto;
        }

        .btn {
            margin: 20px auto;
            width: 300px;
        }

        .child {
            text-align: center;
        }

        .txt {
            margin-top: 5px;
            overflow:hidden;
            /*border: 0;*/
            outline: none;
            resize:none;
        }

        .add_part {
            margin-top: 25px;
        }
    </style>

</head>
<body>

<div id="box" class="box">

    <div id="btn" class="btn">
        <button id="addtxt">添加文字</button>
        <button id="addimg">上传图片</button>
        <button id="addvoid">上传视频</button>
        <button id="deltxt">删除文字</button>
        <button id="delete">删除图片</button>
        <button id="delvido">删除视频</button>
    </div>

    <!--显示区域-->
    <div id="child" class="child">

    </div>

</div>


<script>

    // 添加文本框
     $('#addtxt').click(function () {
         $('.child').append(" </br><div><textarea class=\"txt\" οnfοcus=\"if(value=='请输入具体内容'){value=''}\"  οnblur=\"if (value ==''){value='请输入具体内容'}\">请输入具体内容</textarea></div>");
     });


    // 添加视频
    $('#addvoid').click(function () {
        $('.child').append(" </br><div class='vido'>" +
            "<input class=\"form-control\" type=\"file\" style=\"height:auto;\" id=\"video\" name=\"video\" />" +
            "<video style=\"height:auto;\" src=\"\" id=\"video0\" controls=\"controls\"></video>\n" +
            "</div>");

        //上传视频后上传按钮消失
        $('.form-control').click(function () {
            $(this).hide();
        })

        //    视频上传
         $('.form-control').change(function(){
        var file = this.files[0];
        console.log(file);
        readFile(file,$(this));
    })
    function readFile(file,element){
        // 新建阅读器
        var reader = new FileReader();
        // 根据文件类型选择阅读方式
        switch(file.type){
            case 'video/mp4':
            // case 'video/mv':
                reader.readAsDataURL(file);
                break;
        }
        // 当文件阅读结束后执行的方法
        reader.addEventListener('load',function(){
            // 如果说让读取的文件显示的话,还是需要通过文件的类型创建不同的标签
            switch(file.type){
                case 'video/mp4':
                // case 'video/mv':
                    console.log(reader);
                    element.siblings('#video0').attr('src',reader.result);
                    break;
            }
        })
    }


    });


    // 添加图片框
    $('#addimg').click(function () {
        $('.child').append(" </br> <div class=\"add_part\">\n" +
            "    <input type=\"file\" name=\"\" class=\"add_file\">\n" +
            "    <img src=\"\" class=\"cover_add\">\n" +
            "  </div>");


        // 图片上传
        $('.add_file').change(function(){
            var file = this.files[0];
            console.log(file);
            readFile(file,$(this));
        })
        function readFile(file,element){
            // 新建阅读器
            var reader = new FileReader();
            // 根据文件类型选择阅读方式
            switch(file.type){
                case 'image/jpg':
                case 'image/png':
                case 'image/jpeg':
                case 'image/gif':
                    reader.readAsDataURL(file);
                    break;
            }
            // 当文件阅读结束后执行的方法
            reader.addEventListener('load',function(){
                // 如果说让读取的文件显示的话,还是需要通过文件的类型创建不同的标签
                switch(file.type){
                    case 'image/jpg':
                    case 'image/png':
                    case 'image/jpeg':
                    case 'image/gif':
                        console.log(reader);
                        element.siblings('.cover_add').attr('src',reader.result);
                        break;
                }
            })
        }

    });



    //    点击删除事件
    //    文本
    /*$('#deltxt').click(function () {
        $('.child .txt:last').remove();
    });*/
    //图片
    $('#delete').click(function () {
        $('.child .add_part:last').remove();
    })
    //视频
    $('#delvido').click(function () {
        $('.child .vido:last').remove();
    })

</script>


</body>
</html>

其中视频部分加了隐藏的功能(即点击后按钮隐藏),这里也可以使用display:hidden来实现,但是我对于这个不熟,所以就直接用了hide()来实现。(其他的部分如果要实现同样的功能,解决办法同此一样)
在这里插入图片描述

$(’#delete’).click(function () {
$(’.child’).remove(
1、如果是想要一次全部移除,则直接写div或者都包含的class/id就可以了
2、移除某一类,写此类的class/id就可以了
3、从下往上逐渐移除,按代码中那样写就可以了
4、class/id名要自己注意哦!!
);
})

今天又是开心的一天呢!!
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
实现一个按钮一道选择题,可以采用以下步骤: 1. 创建一个包含题目和选项的数据结构,例如: ```js const question = { title: '以下哪个不是 JavaScript 数据类型?', options: ['string', 'number', 'boolean', 'array'], answer: 3 // 答案的索引 } ``` 2. 在组件中使用 `v-for` 指令渲染选项按钮: ```html <template> <div> <h2>{{ question.title }}</h2> <ul> <li v-for="(option, index) in question.options" :key="index"> <button @click="selectOption(index)">{{ option }}</button> </li> </ul> </div> </template> ``` 3. 定义 `selectOption` 方法,记录用户选择的答案,并判断答案是否正确: ```js export default { data() { return { question: { title: '以下哪个不是 JavaScript 数据类型?', options: ['string', 'number', 'boolean', 'array'], answer: 3 }, selectedOption: null, // 用户选择的选项 isCorrect: null // 答案是否正确 } }, methods: { selectOption(index) { this.selectedOption = index this.isCorrect = index === this.question.answer } } } ``` 4. 根据 `isCorrect` 的值显示不同的提示信息: ```html <template> <div> <h2>{{ question.title }}</h2> <ul> <li v-for="(option, index) in question.options" :key="index"> <button @click="selectOption(index)">{{ option }}</button> </li> </ul> <p v-if="selectedOption !== null"> {{ isCorrect ? '恭喜你,答对了!' : '很遗憾,答错了。' }} </p> </div> </template> ``` 以上就是一个简单的按钮选择题的实现。如果有多道题目,可以在组件中定义一个题目列表,并在 `selectOption` 方法中判断当前是否为最后一道题,如果是,则显示总分数。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王小玖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值