Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/32.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样式的属性名称——从常规版本到JS属性camelCase版本,反之亦然_Javascript_Css - Fatal编程技术网

Javascript CSS样式的属性名称——从常规版本到JS属性camelCase版本,反之亦然

Javascript CSS样式的属性名称——从常规版本到JS属性camelCase版本,反之亦然,javascript,css,Javascript,Css,是否有获取相应名称的规定 我正在编写的函数必须通过element.style[propnameCamelCase]设置样式,并通过document.defaultView.getComputedStyle(元素“”).getPropertyValue(propname常规),检索现有的呈现值,我很难证明必须向这个函数传递两个独立但语义相同的参数是合理的 我知道,对于大多数人来说,用相同的单词分隔的camelCase和hyphen之间的转换相当简单,所以我可以使用正则表达式来转换它们。但也许有一些

是否有获取相应名称的规定

我正在编写的函数必须通过
element.style[propnameCamelCase]
设置样式,并通过
document.defaultView.getComputedStyle(元素“”).getPropertyValue(propname常规)
,检索现有的呈现值,我很难证明必须向这个函数传递两个独立但语义相同的参数是合理的

我知道,对于大多数人来说,用相同的单词分隔的camelCase和hyphen之间的转换相当简单,所以我可以使用正则表达式来转换它们。但也许有一些不是这样的

我绞尽脑汁想知道如何用正则表达式处理驼峰大小写的大写字母


编辑:啊,我可以使用regex replace函数,每次看到连字符时,将下一个字母转换为大写

所以你基本上是在改造。也许看看jQuery如何解决camelCase问题会有所帮助:

我正要问同样的问题(我打算把它命名为“将css名称翻译成\来自javascript对应项”)。不知何故,我最终写下了自己的解决方案

function cssNameToJsName(name)
{
    var split = name.split("-");
    var output = "";
    for(var i = 0; i < split.length; i++)
    {
        if (i > 0 && split[i].length > 0 && !(i == 1 && split[i] == "ms"))
        {
            split[i] = split[i].substr(0, 1).toUpperCase() + split[i].substr(1);
        }
        output += split[i];
    }
    return output;
}

function jsNameToCssName(name)
{
    return name.replace(/([A-Z])/g, "-$1").toLowerCase();
}
函数cssNameToJsName(name)
{
var split=name.split(“-”);
var输出=”;
对于(变量i=0;i0&&split[i]。长度>0&!(i==1&&split[i]==ms”))
{
split[i]=split[i].substr(0,1).toUpperCase()+split[i].substr(1);
}
输出+=分割[i];
}
返回输出;
}
函数jsNameToCssName(name)
{
返回name.replace(/([A-Z])/g,“-$1”).toLowerCase();
}

我想提一下,
CSSStyleDeclaration.style.setProperty
接受css/hyphen类型的属性名,而不进行转换,如文档所述

请尝试此连字符属性,例如:

document.body.style.setProperty("background-color", "red");
您也可以这样做:

document.body.style["background-color"] = "silver";

这些方法(如果可以使用的话)可能更简单。

css属性通常有连字符,而不是下划线。我想如果他们的解决方案是实际转换为camelcase,那么这就是我要做的:
function-toCamelCase(variable){return variable.replace(/-([a-z])/g,function(str letter){return letter letter.toUpperCase();}
我不知道您的环境/环境/需求,但使用jQuery这样的库(分布广泛且使用频繁)通常不是一个坏主意。他们通常会考虑一些你甚至不知道的事情(比如,不正确地使用-MS厂商前缀)。我不是在宣传jQuery,但你应该有理由不使用它(或者dojo,或者任何能让你的船漂浮的库),jQuery是一个庞大且通常速度较慢的库,您可能不想为单个功能添加它。我曾遇到过这样的站点,其中多达四个不同版本的jQuery实例被加载到不同的iFrame中,这些iFrame由不同的开发人员制作,他们可能同意“使用广泛使用的库通常不是一个坏主意”。除了纯粹的膨胀之外,它还产生了一些未知因素,使得调试更加困难。这一点让我觉得是避免使用jQuery的一个防水理由。对于原型设计来说,这是一个很好的工具,但在为更广泛的web生态系统制作组件时,这是一个负担。