简体   繁体   English

如何通过javascript实现排名状态在哪个区块的效果?

[英]How to achieve the effect of which block the ranking status is in through javascript?

I have a requirement.我有一个要求。 There is a bar state diagram on the screen to display the current ranking of users.屏幕上有条形图state,显示当前用户排名。 Respectively from left to right represent, behind, average, good.从左到右分别代表、落后、一般、良好。 The backend will pass a value to me.后端将向我传递一个值。 The maximum value is 30 and the minimum value is 1. My task is to put this value in the position of the long status list.最大值是30,最小值是1。我的任务是把这个值放到长状态列表的position中。 At present, my idea is as follows: Divide a long bar into three major blocks, and each block has 10 small blocks.目前我的想法是:把一个长条分成三个大块,每个块有10个小块。 I use the span tag to divide it.我使用 span 标签来划分它。 If the value transmitted from the backend is 8, then turn the block in the span that matches data-index = 8 into a red display.如果后端传来的值为8,则将span中匹配data-index = 8的block变成红色显示。 Since I am a novice in programming, the difficulty I have encountered at present is that I have an idea, but I don't know how to write the programming part.由于本人是编程新手,目前遇到的困难是有想法,但是不知道编程部分怎么写。 I hope I can get help from everyone here, or if you have a better way, I hope you can Can share with me, thank you.希望能得到在座各位的帮助,或者大家有更好的方法,希望大家可以分享给我,谢谢。

 body { width: 100%; height: 100vh; display: flex; justify-content: center; align-items: center; }.anking { display: flex; }.anking.bar { width: 200px; height: 10px; background-color: #ccc; margin: 0px 3px; border-radius: 10px; }.anking.bar span { display: inline-block; background-color: transparent; width: 10px; height: 10px; }.red { width: 10px; height: 10px; background: red; }
 <div class="anking"> <div class="bar ehind"> <span data-index="1"></span> <span data-index="2"></span> <span data-index="3"></span> <span data-index="4"></span> <span data-index="5"></span> <span data-index="6"></span> <span data-index="7"></span> <span data-index="8"></span> <span data-index="9"></span> <span data-index="10"></span> </div> <div class="bar generally"> <span data-index="11"></span> <span data-index="12"></span> <span data-index="13"></span> <span data-index="14"></span> <span data-index="15"></span> <span data-index="16"></span> <span data-index="17"></span> <span data-index="18"></span> <span data-index="19"></span> <span data-index="20"></span> </div> <div class="bar good"> <span data-index="21"></span> <span data-index="22"></span> <span data-index="23"></span> <span data-index="24"></span> <span data-index="25"></span> <span data-index="26"></span> <span data-index="27"></span> <span data-index="28"></span> <span data-index="29"></span> <span data-index="30"></span> </div> </div>

在此处输入图像描述

Given that you have N number of blocks, and the server returns an index between 0 and N-1, then all you need to do is find the block element at the given index.假设您有 N 个块,并且服务器返回 0 到 N-1 之间的索引,那么您需要做的就是在给定索引处找到块元素。 Below is a demonstration of how to access a collection by index in JS.下面演示如何在 JS 中通过索引访问集合。

Also note that your .red CSS class isn't specific enough to override your default styling.另请注意,您的.red CSS class 不够具体,无法覆盖您的默认样式。 You need to make it more specific, again the demo below demonstrates how to do this:您需要使其更具体,下面的演示再次演示了如何执行此操作:

 const blocks = document.querySelectorAll('.bar > span'); const mockValueFromServer = 8; blocks[mockValueFromServer - 1].classList.add('red')
 body { width: 100%; height: 100vh; display: flex; justify-content: center; align-items: center; }.anking { display: flex; }.anking.bar { width: 200px; height: 10px; background-color: #ccc; margin: 0px 3px; border-radius: 10px; }.anking.bar span { display: inline-block; background-color: transparent; width: 10px; height: 10px; }.anking.bar span.red { background: red; }
 <div class="anking"> <div class="bar ehind"> <span data-index="1"></span> <span data-index="2"></span> <span data-index="3"></span> <span data-index="4"></span> <span data-index="5"></span> <span data-index="6"></span> <span data-index="7"></span> <span data-index="8"></span> <span data-index="9"></span> <span data-index="10"></span> </div> <div class="bar generally"> <span data-index="11"></span> <span data-index="12"></span> <span data-index="13"></span> <span data-index="14"></span> <span data-index="15"></span> <span data-index="16"></span> <span data-index="17"></span> <span data-index="18"></span> <span data-index="19"></span> <span data-index="20"></span> </div> <div class="bar good"> <span data-index="21"></span> <span data-index="22"></span> <span data-index="23"></span> <span data-index="24"></span> <span data-index="25"></span> <span data-index="26"></span> <span data-index="27"></span> <span data-index="28"></span> <span data-index="29"></span> <span data-index="30"></span> </div> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM