2012-02-25 2 views
-1

я написать функцию хотите установить или получить стиль значение свойства:Как создать функцию для установки или получения значения свойства стиля?

function $(ID){return document.getElementById(ID);} 

Object.prototype.css=function(style,value){ 
    if(value==undefined){ 
     return eval("this.style."+style); 
    } 
    else{ 
     if(isNaN(value)){ 
      return eval("this.style."+style+"=\""+value+"\""); 
     } 
     else{ 
      return eval("this.style."+style+"="+value); 
     } 
    } 
} 

function ad(){ 
    $("ad_ol").css("top","-170px"); 
} 

он может хорошо работать в FireFox, Chrome и IE9, но не работает в IE7 и IE8, сообщение об ошибке: Объект не поддерживает «css» собственность или метод

кто может мне помочь? это «эта» проблема? есть лучшая функция может это сделать?

+5

Поскольку элементы не являются реальными объектами в IE <9. В любом случае, ваш код полон отчаявшихся элементов ('eval',' Object.prototype'). Я рекомендую обновляться с использованием лучших практик. – pimvdb

+2

«Полностью обескураживающие аспекты» +1 Не используйте 'eval()', и я бы не [прикреплял метод '.css()' к каждому «объекту»] (http://jsfiddle.net/c5yr3/). –

+1

Или, возможно, еще хуже: http://jsfiddle.net/c5yr3/1/. – pimvdb

ответ

1

Нет необходимости в eval, и в вашем коде есть другие недостатки.
Попробуйте использовать что-то вроде:

function css(prop,value){ 
    value = value || ''; 

    if(prop) { 
    this.style[prop] = value; 
    return this.style[prop]; 
    } 
    return true; 
} 

function $(ID){ 
    var element = document.getElementById(ID || 'nodId'); 

    if(element) { 
    element.css = css; // create css method for this element 
    } 

    return element; // Note: element is null if no ID was provided 
} 

$("ad_ol").css("top","-170px"); //=> should work now 
+0

Я попробовал несколько иной подход: http://jsfiddle.net/c5yr3/4/ –

+0

@ Джаред: да, это еще одна возможность. В Рим есть много дорог. В любом случае, в любом случае, ошибка будет вызвана, если элемент не будет найден. – KooiInc

+0

[Может быть] (http://jsfiddle.net/c5yr3/6/)? –

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