Javascript 从字符串jQuery中获取CSS属性/规则

Javascript 从字符串jQuery中获取CSS属性/规则,javascript,jquery,css,string,dom,Javascript,Jquery,Css,String,Dom,因此,我正在寻找一个jQuery插件或一个通常使用javascript的方法,在这里,我可以从一个字符串中获取CSS属性,而不必使用我必须编写的大量If-else语句。字符串来自用户输入,如文本区域。例如: var string = "#hello{border:1px #000 solid;background-color:#FFF;}"; 所以基本上我希望能够从字符串及其属性中识别ID和类。因此,在本例中,有一个名为Hello的ID,它有1px的边框和#FFF(白色)的背景色。然后,这些信

因此,我正在寻找一个jQuery插件或一个通常使用javascript的方法,在这里,我可以从一个字符串中获取CSS属性,而不必使用我必须编写的大量If-else语句。字符串来自用户输入,如文本区域。例如:

var string = "#hello{border:1px #000 solid;background-color:#FFF;}";

所以基本上我希望能够从字符串及其属性中识别ID和类。因此,在本例中,有一个名为Hello的ID,它有1px的边框和#FFF(白色)的背景色。然后,这些信息将被添加到一个对象中,并被推送到一个数组中。是否有插件或方法可以做到这一点?每个字符串中也会有多个。我知道这可能有点让人困惑。谢谢

JSCSSP是一个CSS解析器,我相信它应该能够完全满足您的需求。请浏览以下连结:


请告诉我这对你来说是否是一个合适的解决方案。谢谢。

如果在呈现页面上运行javascript,这可能非常简单。首先,获取所有CSS属性的列表(列表可能相当大)

然后你做:(伪代码)

那么您想要的字符串将变成:

'#hello{' + properties.join(';') + '}'

现在,该列表包含所有计算样式,因此它可能相当大。有关更多详细信息,请参阅该方法。

您似乎希望解析CSS样式规则并提取组件。这并不难,因为通用语法是一个选择器,后跟一个由零个或多个分号分隔的名称:值对(即选择器{property:value;property:value;…})组成的分号分隔集列表

正则表达式应该可以做到这一点,但是如果希望选择器完全符合当前标准,它可能会变得复杂

如果你只需要一个id和类选择器,那么生活就简单多了。此类功能的起点是:

  function parseCSSRule(s) {
    var a = s.indexOf('{');
    var b = s.indexOf('}');
    var selector = s.substring(0, a);
    var rules = s.substring(++a, b).split(';');

    // Do something with the selector and the rules
    alert(selector + '\n' + rules);
  }
这将从规则中拆分选择器,然后将规则分隔为一个数组。您将需要在这里和那里处理一些空白,但如果您只想对选择器选择的元素应用(可能是一组空的)样式规则,则仅此而已

您只需要拆分冒号“:”上的每个规则,并将CSS文本应用于适当的样式属性,在进程中将连字符名称更改为camelCase

编辑
哦,如果您想要一个非常简单的解决方案,只需将规则添加到文档中最后一个样式表的底部。这样你就不必解析它了,只要把它放进去,让浏览器来做这项工作。

嗯。。。为什么不在每个元素上执行与id/类匹配的任何函数?为什么是字符串,解析的源是什么?它来自用户要输入的输入字段。因此,他们输入代码,它将分别显示ID和类的所有属性。基本上就像CSS验证器一样,只是没有那么高级。如果你使用PHP,你可以直接
echo
接收到的数据。非常感谢!!我真的很难想办法解决这个问题!但是你给我买的谢谢
  function parseCSSRule(s) {
    var a = s.indexOf('{');
    var b = s.indexOf('}');
    var selector = s.substring(0, a);
    var rules = s.substring(++a, b).split(';');

    // Do something with the selector and the rules
    alert(selector + '\n' + rules);
  }