Javascript I';我试图得到元素上文本阴影的X和Y值

Javascript I';我试图得到元素上文本阴影的X和Y值,javascript,jquery,Javascript,Jquery,我用CSS给这个元素一个文本阴影: h2 { position:absolute; top:50%; left:30%; text-shadow: 100px 100px 10px black; } 我正在运行jQuery以console.log()查看textShadow值: var shadow = $('div').css('textShadow'); console.log(shadow); 结果是:rgb(0,0,0)100px 100px 10px

我用CSS给这个元素一个文本阴影:

h2 {
    position:absolute;
    top:50%;
    left:30%;
    text-shadow: 100px 100px 10px black;
}
我正在运行jQuery以
console.log()
查看
textShadow
值:

var shadow = $('div').css('textShadow');
console.log(shadow);
结果是:
rgb(0,0,0)100px 100px 10px


如何解析此字符串以分别获得X和Y值?

使用以下正则表达式来匹配
X
Y
值:

var match = $('div').css('textShadow').match(/rgb\(\d+, \d+, \d+\) ([^ ]+) ([^ ]+)/);
var x = match[1], y = match[2];
我假设div始终具有
文本阴影
属性,因为否则
.match()
将返回
null
我更喜欢这种方法:

var shadow = $("div").css("text-shadow").split(" ");
var x = shadow[1];
var y = shadow[2];
与正则表达式相比,我更喜欢使用split()和join(),因为它不太容易出错,而且对大多数人来说更容易理解^^

如注释中所述,由于rgb值,它可能有更多的空间:/ 解决方案:

var shadow = $("div").css("text-shadow").split(" ");
var count = 0;
var xy = [];
for(var x = 0; x < shadow.length; x++) {
    if(shadow[x].indexOf("px") >= 0 && count < 2) { //position value otherwise skip
        xy.push(shadow[x]);
        count++;
    }
}
var x = xy[0];
var y = xy[1];
var shadow=$(“div”).css(“文本阴影”).split(“”);
var计数=0;
var xy=[];
对于(var x=0;x=0&&count<2){//位置值,否则跳过
xy.推(阴影[x]);
计数++;
}
}
var x=xy[0];
变量y=xy[1];

编辑:将split()替换为split(“”),小错误:p

因此,您的问题更简单。如何从
rgb(0,0,0)100px 100px 10px
获取
100
100
?可以使用shadow.split(“”);使用空格分割字符串。是的,我知道我可以将其分割,但是否可以选择特定的值?分割字符串后,可以使用for循环获取所有值。for循环?!只需像我的回答中那样访问数组……如果您在
split()
中添加
,并使用
3
4
而不是
1
2
,它就会工作。我只是使用了拼接,但我喜欢这种拆分方法,更简单。正则表达式在我头上。谢谢大家的创造性回答!是的,你不能忽略那些空格。未删除它们。添加了for循环,用于检查拆分生成的数组值是位置值还是颜色值。