使用JSON Ajax制作点击按钮 随机出现一张图片并且显示对应是第几张图片

这篇博客介绍如何利用HTML、JavaScript和Ajax技术,结合JSON数据,实现点击按钮时随机展示一张图片,并显示其在数据集中的序号。重点讲解了随机数的生成、JSON解析以及DOM操作。

使用随机数让图片随机产生

 

html部分:

<body>
    <h1 id="text"></h1>
    <p id="title"></p>
    <img src="" alt="" id="img"/>
    <button id="btn">点击按钮</button>
</body>

 

js部分

<script type="text/javascript" src="ajax.js"></script>                   //外部引入封装好的ajax封装函数
<script type="text/javascript">
    var arr=[];          //声明一个空数组,用来存放之后需要用的数组 
    function num(n,m){
        return Math.round(Math.random()*(m-n)+n);
    }                                              //封装n~m之间的随机数
    ajax({                                         
        "url":"success.json",                //路径引入json文件
        "method":"get",                     //方法为得到,"GET"在键值对中可以不用大写
        "success":function(response){                   //成功之后会有一个函数
            var data=JSON.parse(response);              //JSON.parse转换为JSON对象
            text.innerHTML=data.data.title;             //找到标题的位置
            arr=data.data.content;                      //把需要的数组放到之前定义的空数组中
            btn.onclick=function(){                              //给按钮增加单击事件
            title.innerHTML=arr[num(0,arr.length-1)].name;         //调用n~m的随机数函数,找到需要内容对应的位置
            img.src=arr[num(0,arr.length-1)].src;     //调用随机数,让图片随机出现
            }
        }

    })
</script>

 封装ajax函数

/* 封装ajax函数
 * @param {string}opt.type http连接的方式,包括POST和GET两种方式
 * @param {string}opt.url 发送请求的url
 * @param {boolean}opt.async 是否为异步请求,true为异步的,false为同步的
 * @param {object}opt.data 发送的参数,格式为对象类型
 * @param {function}opt.success ajax发送并接收成功调用的回调函数
 */
    function ajax(opt) {
        opt = opt || {};
        opt.method = opt.method.toUpperCase() || 'POST';
        opt.url = opt.url || '';
        opt.async = opt.async || true;
        opt.data = opt.data || null;
        opt.success = opt.success || function () {};
        var xmlHttp = null;
        if (XMLHttpRequest) {
            xmlHttp = new XMLHttpRequest();
        }
        else {
            xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
        }var params = [];
        for (var key in opt.data){
            params.push(key + '=' + opt.data[key]);
        }
        var postData = params.join('&');
        if (opt.method.toUpperCase() === 'POST') {
            xmlHttp.open(opt.method, opt.url, opt.async);
            xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');
            xmlHttp.send(postData);
        }
        else if (opt.method.toUpperCase() === 'GET') {
            xmlHttp.open(opt.method, opt.url + '?' + postData, opt.async);
            xmlHttp.send(null);
        } 
        xmlHttp.onreadystatechange = function () {
            if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                opt.success(xmlHttp.responseText);
            }
        };
    }

json文件 

{
    "status": "0",
    "message": "success",
    "data": {
        "title": "请认真对待考试,随机选取其中一张图片",
        "content": [
            {
                "id": "001",
                "name":"第一张图片",
                "src":"img/11.jpg"
            },
            {
                "id": "002",
                "name":"第二张图片",
                "src":"img/22.jpg"
            },
            {
                "id": "003",
                "name":"第三张图片",
                "src":"img/33.jpg"
            },
            {
                "id": "004",
                "name":"第四张图片",
                "src":"img/44.jpg"
            },
            {
                "id": "005",
                "name":"第五张图片",
                "src":"img/55.jpg"
            }
        ]
    }
}

 用到的知识点

n~m随机数的封装

JSON.parse()    将一个 JSON 字符串转换为对象

替换文本:

1.innerHTML   打印标签之间的内容,包括标签和文本信息

2.innerText      打印标签之间的纯文本信息,不会现实标签

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值