简体   繁体   English

如何使用核心javascript一次只显示几张卡片?

[英]How to display only a few cards at a time using core javascript?

So, I already have a working code for this requirement in jquery which displays the specified number of cards/divs.因此,我已经在 jquery 中为这个要求提供了一个工作代码,它显示了指定数量的卡片/div。 For some reason, I have been asked to use pure javascript and I'm not able to achieve it in core javascript.出于某种原因,我被要求使用纯 javascript,但我无法在核心 javascript 中实现它。

Here is my fully working jquery code:这是我完全工作的 jquery 代码:

 size_timelinediv = $("#timeline t").length; console.log(size_timelinediv)//prints 5 var x = 3; //number of cards to be displayed $("#timeline t:lt("+x+")").show(); //displays the first 3 <t> tags only
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="timeline" id="timeline" > <t style="display:none"><div>Hi</div></t> <t style="display:none"><div>Hello</div></t> <t style="display:none"><div>How</div></t> <t style="display:none"><div>Are</div></t> <t style="display:none"><div>You</div></t> </div>

Now as per the requirement I need to convert this jquery code to core javascript :现在根据要求,我需要将此 jquery 代码转换为核心 javascript :

This is what I tried :这是我试过的:

size_timelinediv = document.getElementById("timeline").querySelectorAll("t").length;
console.log(size_timelinediv)//prints 5
var x = 3;//number of cards to be displayed

document.getElementById("timeline").querySelectorAll("t:lt(" + x + ")").style.display = "block"; //this doesn't work

But this doesn't work.但这不起作用。 It gives the following error :它给出了以下错误:

"Uncaught SyntaxError: Failed to execute 'querySelectorAll' on 'Element': 't:lt(3)' is not a valid selector."

How do I achieve the same functionality using core javascript?如何使用核心 javascript 实现相同的功能?

CSS selectors don't have :lt . CSS 选择器没有:lt There are many ways to get the x first entries of the selected elements, for instance by using .slice(0, x) (after converting the node list to an array):有很多方法可以获取所选元素的第x个条目,例如使用.slice(0, x) (在将节点列表转换为数组之后):

 let timelinediv = document.querySelectorAll("#timeline t"); console.log(timelinediv.length); // prints 5 let x = 3; // number of cards to be displayed for (let t of [...timelinediv].slice(0, x)) t.style.display = "";
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="timeline" id="timeline" > <t style="display:none"><div>Hi</div></t> <t style="display:none"><div>Hello</div></t> <t style="display:none"><div>How</div></t> <t style="display:none"><div>Are</div></t> <t style="display:none"><div>You</div></t> </div>

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

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