前端笔记(使用html\css\jquery造n*n的格子,根据预算购买到最多的商品)

需求:创建一个n*n的格子,n是输入框的数字,点击重渲染可以重新画一个n*n的格子,鼠标移入格子中,对应的格子背景设变成红色,点击对应的格子,背景色变成蓝色,再点一次还原颜色。

前端笔记(使用html\css\jquery造n*n的格子,根据预算购买到最多的商品)_第1张图片

 

要造格子有好几种方式,可以用table、ul和li,或者直接使用完全的div

这里为了方便理解,我使用ul和li。

定义html:

box用于渲染格子

<div class="box">div>
<div>
    <input type="text" value="10" id="num">
    <input type="button" onclick="render()" value="重渲染">
div>

css:

这里我们使用ul加flex,让li平分,list-style-type:none;去除li的默认点,li:hover定义鼠标移入时的样式,定义.blue作为样式渲染

.div{
    height: 100%;
}
.box ul{
    display: flex;
    margin: 0;
}
.box ul li{
    width: 10px;
    height: 10px;
    border: 1px solid #000;
    list-style-type:none;
}
li:hover{
    background-color: red;
}
li.blue{
    background-color: blue;
}

js:

ul与li的创建使用数组的join转字符串

{
    function render(){
        let num=$("#num").val()//定几*几格子
        let ul=[],li=[]
        for(let i=0;i){
            li.push(`
  • `) } li=li.join("")//li的dom for(let i=0;i){ ul.push(`
      ${li}
    `) } ul=ul.join("")//ul的dom $(".box").html(ul) $("li").click(function(){//点击格子 let isBlue=$(this).hasClass("blue") if(isBlue){ $(this).removeClass("blue") }else{ $(this).addClass("blue") } }) } render() }

     

     

    需求:根据所有的商品单价(元),和你的预算(元),指定一个尽可能买得多的商品的方案

    前端笔记(使用html\css\jquery造n*n的格子,根据预算购买到最多的商品)_第2张图片

     

    思路是 先将所有商品的价格按从小到大排序起来,设置这个预算值初始为0,从最便宜的开始买,每买一个就加上当前的价格,直到超出预算,那超出前的那次就是最好的购买方式。

    html:

    <div>
        预算:<input type="text" id="ys" value="200"><br>
        商品价格:<input type="text" id="jg" value="50 30 40 55 242 21"><br>
        <input type="button" value="计算" onclick="js()"><br>
        结果:<span id="res">span>
    div>

    js:

    使用sort进行数值排序,使用split将字符串拆分成数组,使用join将数组转化为字符串

    {
        function js(){
            let ys=$("#ys").val(),jg=$("#jg").val()
            let res=0,km=[]//需要金额 可买
            let arr=jg.split(" ")
            arr.sort((a,b)=>a-b)
            for(let i=0;i){
                res+=Number(arr[i])
                console.log(res)
                if(res > Number(ys)){
                    res-=Number(arr[i])
                    break
                }
                km.push(Number(arr[i]))
            }
            console.log(res,km)
            $("#res").text(`需要金额:${res},可买物品:${km.join(" ")}`)
        }
    }

     

    你可能感兴趣的:(前端笔记(使用html\css\jquery造n*n的格子,根据预算购买到最多的商品))