2010-08-19 1 views
0

Я пытаюсь установить выражение css для атрибута для элемента следующим образом.

var scrollTopExpr = '$(document).scrollTop()'; 
var expr = "expression(eval(" + scrollTopExpr + "))"; 
$(this).css("top", expr); 

Но я получаю сообщение «Invalid Argument» как ошибка. Есть идеи?

+0

В каком это браузере? Выражения CSS поддерживаются только IE, а в IE8 - только в режиме совместимости, поскольку они считаются устаревшими Microsoft. – RoToRa

+0

Я пытаюсь сделать фиксированную позицию, и я пытаюсь поддерживать IE6 + FF 2.0+. Но IE7 и IE8 не поддерживают позицию: исправлены без doctype. Я делаю addon-продукт для системы CMS, где я не могу дать свой собственный doctype. Как я могу это сделать? – NLV

+1

Было бы полезно, если бы downvoters потратили пару минут, объяснив причину понижения. – NLV

ответ

2

Выражения были устаревшими и удалены в IE8 (если только вы не находитесь в режиме совместимости). Они также являются производителями свиней, и вы должны держаться подальше от них, если можете, используя JavaScript.

Вам не нужно использовать Eval() внутри выражение(), и это то, что вызывает у вас ошибка. eval() ожидает строку, но вы передаете ей результат переменной, который является Номер. Вынуть Eval():

"expression(" + scrollTopExpr + ")"; 

выражение() уже оценивает выражение, которое вы пройти к нему, так Eval() совершенно не нужна.

Смежные вопросы