Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从css类中获取样式属性并将其设置为另一个css类?_Javascript_Jquery_Css - Fatal编程技术网

Javascript 如何从css类中获取样式属性并将其设置为另一个css类?

Javascript 如何从css类中获取样式属性并将其设置为另一个css类?,javascript,jquery,css,Javascript,Jquery,Css,是否有可能从任何地方都不使用的css类中获取样式属性 例如,我想阅读我想应用于jqueryui动画的color属性,但我想避免在js代码中重复它们 假设我有这个: .default-style { color: red; } .disabled-style { color: gray; } .current-style {} <span class="current-style">Hello world!</span> 您可以通过创建元素、应用类、将

是否有可能从任何地方都不使用的css类中获取样式属性

例如,我想阅读我想应用于jqueryui动画的color属性,但我想避免在js代码中重复它们

假设我有这个:

.default-style {
   color: red;
}

.disabled-style {
   color: gray;
}

.current-style {}


<span class="current-style">Hello world!</span>

您可以通过创建元素、应用类、将元素添加到文档、获取其颜色,然后删除它来作弊。如果这一切都在一个代码块中完成,用户将永远看不到元素:

var div = $("<div>").addClass("default-style").appendTo(document.body);
var color = div.css("color");
div.remove();


你好,世界正确的方法!不欺骗文件

var currentColor;
var styleSheets = document.styleSheets;
for(var j=0; !currentColor && j<styleSheets.length; j++)
{
    var styleSheet = styleSheets[j];
    var cssprops = styleSheet.cssRules || styleSheet.rules; // .rules is for older IE
    for (var i = 0; i < cssprops.length; i++) {
        if(cssprops[i].selectorText == '.default-style');
            currentColor = cssprops[i].style.getPropertyCSSValue('color').cssText;
    }
}
$("span.abc").animate({ color: currentColor });
var-currentColor;
var styleSheets=document.styleSheets;

对于(var j=0;!currentColor&&jConsider使用CSS动画。您想要什么颜色,从哪个类?您可以以正确的方式获取值,而不会通过的样式表属性欺骗javascriptjavascript@NaveenSingh raghuvanshi:这是真的。我不知道。但是,编写自己的循环来搜索正确的css类并不是一件愉快的事情任务,我看不到任何像jQuery那样通过名称获得样式的方法。当然我能够编写这样的循环,但我认为这是不必要的。不是
var color=$(“”)。addClass(“默认样式”).css(“颜色”)
够了吗?@AmitJoki:元素的计算样式取决于它在文档中的位置,因此如果不将它放入文档中,就无法获得元素的计算样式。(尝试一下,看看会得到什么!:-)@T.J.Crowder根据这个推理,您不想将div同级插入到所讨论的元素吗?我的意思是,级联规则可能会应用于不同的目标元素vs
body
@naomik:如果我们所做的只是获取与问题中显示的规则相关的颜色,而不是特定于d中的位置,则不会文档。我真的很难选择一个答案,因为我喜欢这两种解决方案。短答案是因为它很短,而你的答案是因为它是一个很好的技巧:-)通常删除一个被否决的答案,然后发布一个新的答案是可疑的,但在这种情况下,这个答案与最初被否决的答案完全不同,我想我可能会建议你这么做。:-)注:1。推荐信很好。2.你没有把
之后的
。3.声明变量很重要。4.较旧的IE使用
规则
而不是
cssRules
。4.如果这不是dodument中的第一个样式表呢?谢谢,但由于英语知识较少,我无法理解他的问题。由于投了反对票,我研究了一下,找到了解决办法
var currentColor;
var styleSheets = document.styleSheets;
for(var j=0; !currentColor && j<styleSheets.length; j++)
{
    var styleSheet = styleSheets[j];
    var cssprops = styleSheet.cssRules || styleSheet.rules; // .rules is for older IE
    for (var i = 0; i < cssprops.length; i++) {
        if(cssprops[i].selectorText == '.default-style');
            currentColor = cssprops[i].style.getPropertyCSSValue('color').cssText;
    }
}
$("span.abc").animate({ color: currentColor });