Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.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值_Javascript_Jquery_Html_Css_Regex - Fatal编程技术网

使用javascript将纯文本转换为css值

使用javascript将纯文本转换为css值,javascript,jquery,html,css,regex,Javascript,Jquery,Html,Css,Regex,我正在制作一个样式指南,我已经禁用了预标记中的css,我正试图将其作为有效的css应用到上面的示例框中 标记更容易理解(请不要介意奇怪的缩进,这样做是为了简化呈现。另外,“defaut”是法语中“default”的意思): 除了确保目标divs不是空的或有一定高度外,您还需要: 替换前缀并修剪文本内容,以去除尾随空格/分隔符,同时去除最后一个: $this .next('pre') .children('code') .text().match(/@defaut:\s*(

我正在制作一个样式指南,我已经禁用了预标记中的css,我正试图将其作为有效的css应用到上面的示例框中

标记更容易理解(请不要介意奇怪的缩进,这样做是为了简化呈现。另外,“defaut”是法语中“default”的意思):


除了确保目标
div
s不是空的或有一定高度外,您还需要:

替换前缀并修剪文本内容,以去除尾随空格/分隔符,同时去除最后一个

$this
    .next('pre')
    .children('code')
    .text().match(/@defaut:\s*(#.+?);/)[1]
或在
上拆分,并放置在结果数组的第二个元素上:

演示

$('.colored')。每个(函数(){
变量$this=$(this),
prop=$this.next().find('code').text().replace('@defaut:','').trim().slice(0,-1)
;
$this.css({'background-color':prop});
});
div.colored{height:16px;}

弗斯特

@德法特:#f00;
第二 @德法特:#0f0;
第三 @德法特:#00f;

除了确保您的目标
div
不是空的或有一定的高度外,您还需要:

替换前缀并修剪文本内容,以去除尾随空格/分隔符,同时去除最后一个

$this
    .next('pre')
    .children('code')
    .text().match(/@defaut:\s*(#.+?);/)[1]
或在
上拆分,并放置在结果数组的第二个元素上:

演示

$('.colored')。每个(函数(){
变量$this=$(this),
prop=$this.next().find('code').text().replace('@defaut:','').trim().slice(0,-1)
;
$this.css({'background-color':prop});
});
div.colored{height:16px;}

弗斯特

@德法特:#f00;
第二 @德法特:#0f0;
第三 @德法特:#00f;

您可以尝试使用冒号分割文本,并获取由此产生的第二个值,然后删除分号:


您可以尝试使用冒号拆分文本并获取由此产生的第二个值,然后删除分号:


正则表达式有两个问题:

  • code
    标记和
    @defaut
    之间有一条换行符,
    将不匹配该换行符。发件人:

    (小数点)匹配除换行符以外的任何单个字符

    使用
    trim()

  • 正则表达式不能用引号括起来,否则将被视为正则字符串。使用
    replace(/^(.*\\\\\\\\\\\\\\)/)

作为进一步说明,最好通过提取颜色值来获取颜色值,而不是删除周围的所有内容:


此正则表达式将查找“@defaut:”后面可能跟有空格,然后跟有以分号结尾的颜色值,并提取颜色值。另一个好处是,如果您必须在
标记中添加更多数据或更改格式,则此解决方案不会轻易中断。

正则表达式存在两个问题:

  • code
    标记和
    @defaut
    之间有一条换行符,
    将不匹配该换行符。发件人:

    (小数点)匹配除换行符以外的任何单个字符

    使用
    trim()

  • 正则表达式不能用引号括起来,否则将被视为正则字符串。使用
    replace(/^(.*\\\\\\\\\\\\\\)/)

作为进一步说明,最好通过提取颜色值来获取颜色值,而不是删除周围的所有内容:


此正则表达式将查找“@defaut:”后面可能跟有空格,然后跟有以分号结尾的颜色值,并提取颜色值。一个附加的提示是,如果您必须在
标记中添加更多数据或更改格式,此解决方案将不会轻易中断。

您是否看到
default
拼写错误?对不起,它实际上是法语中“default”的意思。因此,在本例中拼写正确,因为该语言是有意使用的。也许翻译是合适的,那好吧。为什么不把文本剪下来,在
字符上拆分,这样你就知道[0]是属性(如果它以@开头,你很容易知道它是一个特殊的属性),并使用[1]作为值?所以
$(this).css($(this.background'),$(this.next().children('code').text().split(':')[1].trim())
该方法也使以后的应用变得更容易,因为如果定义了[0]或其他东西,您可以使用[0]作为属性…@something谢谢,但它不起作用,jquery不会生成任何背景属性。这应该是因为分号仍然存在,我应该删除它,并且seeDid您看到的
default
拼写错误?对不起,它实际上是法语中“default”的意思。因此,在本例中拼写正确,因为该语言是有意使用的。也许翻译是合适的,那好吧。为什么不把文本剪下来,在
字符上拆分,这样你就知道[0]是属性(如果它以@开头,你很容易知道它是一个特殊的属性),并使用[1]作为值?所以
$(this).css($(this).next().children('code').text().split(':')[1].trim())
该方法也使以后的应用更容易,因为如果定义了[0]或其他什么东西,您可以使用[0]作为属性…@something谢谢,但它不起作用,jquery不会生成任何正确的背景
$this.next().find('code').text().replace('@defaut: ', '').trim().slice(0, -1)
$this.next().find('code').text().split(':')[1].trim().slice(0, -1)
$(this).css(
    'background',
     $(this).next().text()
        .split(':')[1]
        .trim()
        .replace(';','')
);
$this
    .next('pre')
    .children('code')
    .text().match(/@defaut:\s*(#.+?);/)[1]