如何更改属性值的一部分

时间:2013-04-05 01:44:19

标签: javascript html

我有点棘手。我正在尝试改变分配给样式的字符串的一部分。我想使用js将两个渐变子句中的50%更改为不同的值,而不必在js中创建整个字符串。

是否与setAttribute一起进行某种正则表达式交换?

<a class="item" id="bob" style="
background-image:-moz-linear-gradient(0deg, rgb(0, 255, 0) 0%, rgb(250, 250, 5) 50%, rgb(252, 3, 3) 100%);
background-image:-webkit-linear-gradient(0deg, rgb(0, 255, 0) 0%, rgb(250, 250, 5) 50%, rgb(252, 3, 3) 100%);
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ff00',endColorstr='#fc0303',GradientType=1);">MYtext</a>

2 个答案:

答案 0 :(得分:0)

哎呀!

var el = document.getElementById('bob');
el.setAttribute('style', el.getAttribute('style').replace('50%', '30%'));

但这会更好:

var el = document.getElementById('bob');
el.style.backgroundImage = el.style.backgroundImage.replace(/50%/g, '30%');

答案 1 :(得分:0)

style属性是一个对象,而不是一个字符串。所以你必须做类似的事情:

var bob = document.getElementById('bob');

var background = bob.style.backgroundImage;

if (background) {
    bob.style.backgroundImage = background.replace('50%','70%');
}

如果您愿意,还可以在setAttribute对象上使用style

bob.style.setAttribute('backgroundImage' ...

但在处理setAttribute个对象时,style在IE上无法可靠地工作(或工作方式不同)。只需使用更短且更可靠的对象访问语法:

bob.style.backgroundImage = ...

请参阅:http://www.quirksmode.org/dom/w3c_core.html