前端JS常用字符串处理实例

  1. 字符串处理常常用在处理服务器回传的数据、动态拼接生成html等,是前端面试的必考题。

  2. 我觉得字符串处理这种常用到的,一定要了然于心,不然用到时急急忙忙去翻手册费半天。


入正题,首先提出平常遇到的几个需求,后面我们来一步一步解决它:

需求1:根据服务器返回的json数据,动态添加元素到列表<ul>    【难度:1】

使用场景:瀑布流下拉刷新、延迟加载、ajax点击加载列表

html模板是这样:

<ul class="icon_list">
            <li><a href="#"><img src="images/floor1-1.png" ></a>
                <p>360杀毒</p>
                <p>10.00M</p>
                <a href="">下载</a></li>
            <li><a href="#"><img src="images/floor1-2.png" ></a>
                <p>软件管家</p>
                <p>10.00M</p>
                <a href="">下载</a></li>
</ul>

json是这样:

{softList:[
    {"name":"360杀毒","size":"10.00M","png_src":"/floor1-1.png","href":"www.baidu.com"},
    {"name":"软件管家","size":"12.00M","png_src":"/floor1-2.png","href":"www.baidu.com"},
    {"name":"360浏览器","size":"14.00M","png_src":"/floor1-3.png","href":"www.baidu.com"},
    {"name":"360商场","size":"10.20M","png_src":"/floor1-4.png","href":"www.baidu.com"},
    {"name":"影视大全","size":"11.00M","png_src":"/floor1-5.png","href":"www.baidu.com"},
    {"name":"万能省电","size":"13.00M","png_src":"/floor1-6.png","href":"www.baidu.com"},
    {"name":"360wifi","size":"25.10M","png_src":"/floor1-7.png","href":"www.baidu.com"},
    {"name":"360ROOT","size":"10.90M","png_src":"/floor1-8.png","href":"www.baidu.com"},
]}

结果是这样:

解决思路:将动态生成各个<li>拼接成字符串,追加到父节点的innerHTML里面

下面给出直接可运行的页面代码(本文太长的代码都会默认折叠了一下):

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <title>page name</title>
    <style>
        /*超链接去下划线*/
        a {
            display: block;
            overflow: hidden;
            outline: none;
            text-decoration: none;
            color: black;
            font-family: "Microsoft YaHei UI";
            color: #333;
        }
        /*li去掉点号*/
        li {
            list-style-type: none;
            text-align: center;
        }
        .floor h2 {
            font-size: 1.6em;
            margin-top: 10px;
            margin-left: 4%;
            color: #333333;
        }
        /*响应式布局核心css*/
        .floor .icon_list{
            min-width: 320px;
            display: flex;
            flex-direction: row;
            flex-wrap: wrap;
            justify-content: flex-start;
        }

        .floor .icon_list li {
            width: 25%;
            margin-bottom: 15px;
        }

        .floor .icon_list li img {
            width: 60%;
        }

        .floor .icon_list li p {
            margin: 4px;
            font-size: 15px;
            color: #33333f;
        }

        .floor .icon_list li p:nth-child(3) {
            color: #ccc;
            font-size: 14px;
        }

        .floor .icon_list li a:last-child {
            margin: 5px auto 0;
            width: 66%;
            height: 25px;
            border: none;
            line-height: 27px;
            border-radius: 18px;
            background: #def3e1;
            font-size: 14px;
            color: #23ac38;
        }

    </style>
</head>

<body>

<!--手机软件-->
<div class="content">
    <div class="floor">
        <h2>手机软件</h2>
        <ul class="icon_list" id="softList">
        </ul>
    </div>
</div>
</div>
</body>
<script>
    //json可以通过ajax加载进来
    var json = {
        softList: [
            {"name": "360杀毒", "size": "10.00M", "png_src": "/floor1-1.png", "href": "www.baidu.com"},
            {"name": "软件管家", "size": "12.00M", "png_src": "/floor1-2.png", "href": "www.baidu.com"},
            {"name": "360浏览器", "size": "14.00M", "png_src": "/floor1-3.png", "href": "www.baidu.com"},
            {"name": "360商场", "size": "10.20M", "png_src": "/floor1-4.png", "href": "www.baidu.com"},
            {"name": "影视大全", "size": "11.00M", "png_src": "/floor1-5.png", "href": "www.baidu.com"},
            {"name": "万能省电", "size": "13.00M", "png_src": "/floor1-6.png", "href": "www.baidu.com"},
            {"name": "360wifi", "size": "25.10M", "png_src": "/floor1-7.png", "href": "www.baidu.com"},
            {"name": "360ROOT", "size": "10.90M", "png_src": "/floor1-8.png", "href": "www.baidu.com"},

        ]
    }
    //动态添加’手机软件 处的列表元素
    function addSoftList(softList) {
        //a要使用getElementById,如果使用getElementsByClassName注意要加[0]
        var a = document.getElementById(‘softList‘);
        //var a = document.getElementsByClassName(‘icon_list‘)[0];
        var str = ‘‘;
        //一条li的格式
        /*<li><a href="#"><img src="images/floor1-1.png" ></a>
         <p>360杀毒</p>
         <p>10.00M</p>
         <a href="">下载</a></li>*/
        for (var i in softList) {
            str += ‘<li><a href="#"><img src="images‘ + softList[i].png_src + ‘" ></a>‘ +
                    ‘<p>‘ + softList[i].name + ‘</p>‘ +
                    ‘<p>‘ + softList[i].size + ‘</p>‘ +
                    ‘<a href="‘ + softList[i].href + ‘">下载</a></li>‘;
        }
        //追加元素
        a.innerHTML += str;
    };
    //这样调用
    addSoftList(json.softList);
</script>
</html>

展开代码

顺便也做成了Flex响应式布局,无论页面是什么尺寸都会自动适应页面大小。

不明白什么是Flex响应式布局的可参见 http://www.cnblogs.com/chris-oil/p/5831028.html

11.5 未完待续。。

时间: 2024-10-05 23:11:41

前端JS常用字符串处理实例的相关文章

JS常用字符串处理方法总结

1.indexOf()方法,从前往后查找字符串位置,大小写敏感,从0开始计数.同理,lastIndexOf() 方法从后往前,两个方法对于相同的检索条件输出的结果是一样的 例如: <script type="text/javascript"> var str="Hello World!" document.write(str.indexOf("Hello"))//输出0 document.write(str.indexOf("

JS截取字符串方法实例

// JS截取字符串可使用 substring()或者slice() // // 函数:substring() // 定义:substring(start,end)表示从start到end之间的字符串,包括start位置的字符但是不包括end位置的字符. // 功能:字符串截取,比如想从"MinidxSearchEngine"中得到"Minidx"就要用到substring(0,6) // 例子: var src="images/off_1.png&quo

JS 常用字符串操作

Js字符串操作函数大全 /*******************************************                        字符串函数扩充                                 *******************************************/ /*===========================================//去除左边的空格===============================

前端js正则的一个实例:过滤“rm -rf /”

最近开发cmdb,有个需求是要求脚本中不能含有"rm -rf /"命令,如果含有这个命令,前端弹出警告框提示. 这里需要用test方法来测试字符串,符合模式时返回true,否则返回false. 我先从控制台调试一下: 可以看到,匹配OK了. 前端代码如下: var re = /rm -rf \/$/;  //匹配"rm -rf /"命令 if (re.test('your commands')) {     alert('您输入的命令含有"rm -rf /

关于前端js拼接字符串的一点小经验

1.今天在做项目的时候遇到一个问题,就是使用onclick="xxx()"  点击事件的时候,参数如果为全数字就会出现点击无反应的问题.但是当参数为字符串或者动态内容的时候就会出现事件无法响应.比如onclick="add("abc")";这样在add方法中无法获取到参数. 解决办法:是用转移字符,onclick="add(\'abc\')";这样在方法中就可以使用了.         2.还有一个是在做拼接字符串的时候,如果

js常用字符串方法汇总

concat()将两个或多个字符的文本组合起来,返回一个新的字符串. var a = "hello"; var b = ",world"; var c = a.concat(b); alert(c); //c = "hello,world" indexOf()返回字符串中一个子串第一处出现的索引(从左到右搜索).如果没有匹配项,返回 -1 . var index1 = a.indexOf("l"); //index1 = 2

js中字符串常用熟悉和方法

for(var i=0;i<=450;i++){ for(var j=380-i;j+i<=450 && j+i>=380;j++){ if((i*75+j*80.1)==(i+j)*76){ alert('nan:'+i+'nv:'+j); } } } js中字符串常用熟悉和方法,布布扣,bubuko.com

【前端】vue.js环境配置以及实例运行简明教程

vue.js环境配置以及实例运行简明教程 声明:本文档编写参考如下两篇博客,是对它们的修改与补充,欢迎点击链接查看原文: 原文1:vue.js在windows本地下搭建环境和创建项目 原文2:Vue.js开发环境搭建 VUE.JS简介 何为Vue.js Vue.js(读音 /vju?/, 类似于 view)是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合.另一方面,Vue

Notepad++前端开发常用插件介绍

Notepad++前端开发常用插件介绍 Notepad++除了自身的功能强大之外,更是有许多非常的优秀的插件,下面就总结一下前端开发过程一些比较常用的插件. Emmet Emmet的前身是Zen Coding,一款使用仿CSS选择器的语法来快速开发HTML和CSS的插件,是前端开发神器.它无视了编辑器的自动提示和自动完成,秒杀了你自定义的各种快捷键或者 AHK 的热字符串,以智能简洁高效的缩短输入,带给你超快速地书写各种复杂而枯燥的 HTML 和 CSS 代码的体验.现在可以在Notepad++