0

少しトリッキーなことがあります。スタイルに割り当てられた文字列の一部だけを変更しようとしています。js で文字列全体を作成することなく、js を使用して 2 つのグラデーション句の 50% を異なる値に変更したいと考えています。

と組み合わせてある種の正規表現交換はあり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>
4

2 に答える 2

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%');
于 2013-04-05T02:23:04.890 に答える
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を処理する場合、IE では確実に動作しません (または動作が異なります) 。style代わりに、より短く信頼性の高いオブジェクト アクセス構文を使用してください。

bob.style.backgroundImage = ...

参照: http://www.quirksmode.org/dom/w3c_core.html

于 2013-04-05T03:51:46.053 に答える