首页 > 其他分享 >web前端之根据字符串长度从长到短排序、中文字符串优先、样式循环、禁止冒泡、悬浮、激活、禁用、点击、切割、替换、stopPropagation、textarea、replace、split、sort

web前端之根据字符串长度从长到短排序、中文字符串优先、样式循环、禁止冒泡、悬浮、激活、禁用、点击、切割、替换、stopPropagation、textarea、replace、split、sort

时间:2024-08-18 19:54:40浏览次数:10  
标签:box val color 文本框 replace 从长 字符串 listA event

MENU


前言

1、代码段由HTML、CSS(使用Sass语法)和JavaScript组成,创建一个文本框,用户可以在其中输入内容,并通过点击按钮进行操作。
2、代码段的主要功能是允许用户输入一系列以 分隔的项,并根据长度对这些项进行排序(中文字符优先),然后将结果重新显示在文本框中。


效果图

1


2


3


4


5


html

<div class="box">
    <textarea id="idTextarea" rows="8" onclick="handleStop(event)" ondblclick="handleStop(event)"
        oninput="runInput(event)"></textarea>
    <div>
        <button class="btn type1" onclick="handleClear()">
            清 空
        </button>
        <button class="btn type2" onclick="handleConfirm()">
            确 认
        </button>
    </div>
</div>

1、<div class="box">包含一个文本框和两个按钮。.box类用于外层容器的样式设置。
2、<textarea id="idTextarea" rows="8">这是一个多行文本输入框,id="idTextarea"用于在JavaScript中获取该元素。rows="8"设置文本框的高度。
2.1、onclick="handleStop(event)"ondblclick="handleStop(event)"事件用于阻止事件冒泡。
2.2、oninput="runInput(event)"事件在用户输入时触发,并将输入的内容存储在val变量中。
3、<button class="btn type1" onclick="handleClear()">清 空</button>一个按钮,用于清空文本框的内容。
4、<button class="btn type2" onclick="handleConfirm()">确 认</button>一个按钮,用于处理并确认用户输入的内容。


style

body {
    width: 100vw;
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 0;
    padding: 0;
    box-sizing: border-box;

    .box {
        width: 68%;
        display: flex;
        flex-direction: column;

        >textarea {
            resize: none;
            outline: none;
        }

        >div {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-top: 18px;

            >button {
                flex: 1;
                margin: 0;
                padding: 6px 0px;
                box-sizing: border-box;
                font-size: 18px;
                background-color: transparent;
                border: none;
                outline: none;
                border-radius: 4px;
                cursor: pointer;
            }

            >button:first-child {
                margin-right: 8px;
            }

            >button:last-child {
                margin-left: 8px;
            }
        }
    }
}

$btnColorList: #6c6d71, #409eff;

@for $i from 1 through length($btnColorList) {
    .btn.type#{$i} {
        $color: nth($btnColorList, $i);
        background: $color;
        color: #ffffff;

        &:hover {
            background: lighten($color, 10%);
        }

        &:active {
            background: darken($color, 10%);
        }

        &:disabled {
            background: lighten($color, 10%);
            color: white;
        }
    }
}

1、body设置整个页面的样式,将内容居中显示。
2、.box设置.box容器的宽度、布局方向(列方向)、内部元素的间距等。
2.1、>textarea设置文本框无法调整大小且无边框样式。
2.2、>div设置按钮所在的div,确保按钮之间有一定的间距,并且在页面中水平排列。
3、$btnColorList定义一个按钮颜色列表,其中包含两个颜色代码#6c6d71(灰色)和#409eff(蓝色)。
4、@for使用循环为.btn类的不同类型按钮设置背景颜色、文字颜色和不同状态下的样式(悬停、激活和禁用状态)。


JavaScript

let val = '';

function runInput(event) {
    val = event.target.value;
}

function handleStop(event) {
    event.stopPropagation();
}

function handleClear() {
    if (!val) {
        return alert('无内容可清空');
    } else {
        val = '';
        document.getElementById('idTextarea').value = val;
    }
}

function handleConfirm() {
    if (!val) {
        return alert('请输入内容');
    } else {
        let runSort = (list) => list.sort((a, b) => b.length - a.length);
        let list = [];
        let listA = [];
        let listB = [];
        let result = undefined;

        list = val.split('、');
        list.forEach(item => {
            if (/^[A-Za-z]+$/.test(item)) {
                listB.push(item);
            } else {
                listA.push(item);
            }
        });
        listA = runSort(listA);
        listB = runSort(listB);
        result = [...listA, ...listB];
        result = result.toString();
        result = result.replace(/,/g, '、');
        document.getElementById('idTextarea').value = result;
    }
}

1、let val = '';定义一个全局变量val,用于存储用户输入的文本内容。
2、runInput(event)在用户输入时调用,将输入的内容保存到val中。
3、handleStop(event)用于阻止点击事件的冒泡,确保事件只在当前元素上触发。
4、handleClear()清空文本框内容的函数。如果文本框为空,弹出警告提示;否则清空文本框内容。
5、handleConfirm()处理并确认用户输入的内容。如果文本框为空,弹出提示;否则,对内容进行处理。
5.1、将文本内容按分割成多个项。
5.2、如果内容只包含英文字符,则放入listB,否则放入listA。
5.3、对listA和listB按长度从长到短排序,并合并两个列表。
5.4、最终将排序后的内容重新组合并显示在文本框中。

标签:box,val,color,文本框,replace,从长,字符串,listA,event
From: https://blog.csdn.net/weixin_51157081/article/details/124070513

相关文章

  • 不可变字符串string的相关操作
    staticvoidMain(string[]args){//截取字符串stringstr1="ABCDEFGHIJKLMN";stringstr2=str1.Substring(0,4);//从0位开始截取,共截取4位;Console.WriteLine(str2);Console.WriteLin......
  • Leetcode每日一题 20240817 3137.K周期字符串需要的最少操作次数
    题目描述给你一个长度为n的字符串word和一个整数k,其中k是n的因数。在一次操作中,你可以选择任意两个下标i和j,其中0<=i,j<n,且这两个下标都可以被k整除,然后用从j开始的长度为k的子串替换从i开始的长度为k的子串。也就是说,将子串word[i…i+k......
  • 字符串操作
    字符串处理字符串去分割符voidRemoveDelimiter(string&str){array<char,2>delimiterArray{',',''};for(inti=0;i<str.size();++i){if(autoit=find(delimiterArray.begin(),delimiterArray.end(),str[i]);i......
  • C语言 之 strlen、strcpy、strcat、strcmp字符串函数的使用和模拟实现
    文章目录strlen的使用和模拟实现函数的原型strlen模拟实现:方法1方法2方法3strcpy的使用和模拟实现函数的原型strcpy的模拟实现:strcat的使用和模拟实现函数的原型strcat的模拟实现:strcmp的使用和模拟实现函数的原型strcmp的模拟实现本章的内容主要讲解这4个与字符......
  • 字符串(长期)
    字符串序言字符串说实话我不算是很擅长,但是我还是想写一点东西。字符串是一种存储字符的数据结构,本身来说这个并不难,但是因此也拓展出了非常非常多的算法。很多人学习字符串的基本算法时就被劝退了,但殊不知这只是字符串的起点。所以,坚持地学习下去吧,等你有一天层次高了后,你会......
  • 代码随想录 day 54 字符串接龙 | 有向图的完全可达性 | 岛屿的周长
    字符串接龙字符串接龙解题思路利用每次更改一次的特性在字典中来找到符合条件的字符串,同时,我们利用set数据结构来筛选该字符串是否被访问过,同时记录到达该字符串所需要的路径长度知识点心得有向图的完全可达性有向图的完全可达性解题思路有向图和无向图的区别在于它的边......
  • 【C语言】字符函数和字符串函数
    文章目录前言一、字符分类函数二、字符转换函数三、字符串函数的分类四、strlen函数的使用五、strcpy和strncpy函数的使用1.strcpy2.strncpy六、strcat和strncat函数的使用1.strcat2.strncat七、strcmp和strncmp函数的使用1.strcmp2.strncmp八、strstr函数的使用九、s......
  • 回调函数,字符函数,字符串函数
    前言:上一趴我们学习了指针。那么今天我们来学习新的知识,回调函数,字符函数,字符串函数。1回调函数什么是回调函数呢?回调函数就是通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,被调用的函数就是回调函数。......
  • Python之字符串例题2道
    实例1:记录成绩实例2:回文实例1:记录成绩将语文数学英语的成绩一次性输入,用空格隔开,例如“899690”利用split()函数可以对字符串以指定的字符进行切割,这里括号内没有指定字符,默认以空格作为切割标志。如score=input().split()会得到一个列表[89,96,90]然后再通......
  • 代码随想录算法训练营day09|151.翻转字符串里的单词,卡码网:55.右旋转字符串,28.实现 str
    151.翻转字符串里的单词题目链接:https://leetcode.cn/problems/reverse-words-in-a-string/description/暴力removeExtraSpaces:voidremoveExtraSpaces(string&s){for(inti=s.size()-1;i>0;i--){if(s[i]==''&&s[i]=......