用vanilla javascript编写这行jQuery

用vanilla javascript编写这行jQuery,javascript,jquery,Javascript,Jquery,有人能帮我用javascript写这行jQuery吗。它对一个类应用一个样式规则 $('.dataCard').css('visiblity','visible!important')为!重要信息在使用javascript设置样式时不适用,可能是这样 var elems = document.querySelectorAll('.dataCard'); for (var i=elems.length; i--;) { elems[i].style.visibility = 'v

有人能帮我用javascript写这行jQuery吗。它对一个类应用一个样式规则


$('.dataCard').css('visiblity','visible!important')

!重要信息
在使用javascript设置样式时不适用,可能是这样

 var elems = document.querySelectorAll('.dataCard');

 for (var i=elems.length; i--;) {
      elems[i].style.visibility = 'visible';
 }

如果您想创建一个通用函数来替换jQuery中的函数,可以这样做:

function setStyle(elemOrSelector, prop, val) {
    var items;
    if (typeof elemOrSelector === "string") {
        // run selector query
        items = document.querySelectorAll(elemOrSelector);
    } else if (elemOrSelector.nodeName) {
        // must be single DOM object
        items = [elemOrSelector];
    } else if (elemOrSelector.length)
        // must be an array or nodeList
        items = elemOrSelector;
    } else {
        // don't know what it is
        return;
    }
    for (var i = 0; i < items.length; i++) {
        items[i].style[prop] = val;
    }
}

setStyle('.dataCard', "visibility", "visible");
功能设置样式(elemOrSelector、prop、val){
风险值项目;
if(elemOrSelector的类型==“字符串”){
//运行选择器查询
items=document.queryselectoral(elemOrSelector);
}else if(elemOrSelector.nodeName){
//必须是单个DOM对象
项目=[elemOrSelector];
}else if(elemOrSelector.length)
//必须是数组或节点列表
项目=电子选择器;
}否则{
//不知道是什么
返回;
}
对于(变量i=0;i
此通用函数允许您传递DOM元素、类似数组的DOM元素列表或选择器字符串


如果您不想要通用性,那么您可以使用以下方法:

function setStyle(selector, prop, val) {
    var items = document.querySelectorAll(selector);
    for (var i = 0; i < items.length; i++) {
        items[i].style[prop] = val;
    }
}

setStyle('.dataCard', "visibility", "visible");
功能设置样式(选择器、道具、val){
var items=document.querySelectorAll(选择器);
对于(变量i=0;i
for
循环的运行方式有点不同。为什么要走非传统路线(这会让不熟悉这种风格的人更难阅读)?@jfriend00如果他们不熟悉,他们可以查找它的意思,然后突然,它就很熟悉了。@jfriend00-我总是以这种方式迭代节点列表,以确保不会遇到问题。当然,querySelectorAll不会返回活动节点列表,因此这不是问题,但如果切换到getElementsByClassName,则会返回,因此我认为保持一致性是一种很好的做法。@RUJordan-熟悉这种迭代方式的人要少得多。它使用布尔测试的副作用来减少循环变量。是的,它是有效的,但不像其他方法那样可读。很好。对于可读性更强的代码,我会做出不同的选择。我确实理解在实时节点列表中反向迭代的优势,但出于几个原因,这里不需要反向迭代。也许我更看重代码对其他人的可读性,而不是某些人。可能与多年来管理一个开发团队有关。@jfriend00这可能与主题无关,但当人们的技能水平相差如此之大时,如何定义可读性呢?选择器不是defined@gomangomango更多代码行!=复杂。它实际上是一个非常简单的函数。@gomangomango-它更通用,可以用于多种输入格式的许多操作,就像它所取代的jQuery函数一样。我更喜欢可以重用的通用代码,而不是大量的代码片段,每一段代码都需要复制和更改才能做一些稍微不同的事情。啊,我明白了。可以我会研究它并从中学习。我对学习jquery背后的js很感兴趣。如果你要走这条路,模仿jquery,为什么不这样做->