CSS代码以JavaScript功能

问题描述:

我有此JavaScript方法:CSS代码以JavaScript功能

<script type="text/javascript"> 
    function MyFunction(sender, eventArgs) { 
     if (someCondition) { 
      //css 
     } 
    } 
</script> 

CSS代码欲被执行的是:

<style type="text/css"> 
      .classInsideTheClassWhichEntersTheIf 
      { 
      background: url(Images/myImage.png) !important; 
      } 
</style> 

但只对那些进入上述if条件的细胞。如果我在外面写它,它适用于每个细胞。是这样的可能吗?如果是的话,该怎么做?

+0

你是什么意思“仅适用于进入条件的细胞”?您的JavaScript是内联定义的吗?你的风格定义在哪里?我希望不在文档内部? – brezanac 2011-12-19 12:43:16

+0

请提供您的代码的更多细节。您的代码中没有单元格,我们不知道发件人是什么等。 – KSDaemon 2011-12-19 12:44:35

有几种方法可以做到这一点。

选项1

<script type="text/javascript"> 
    function MyFunction(sender, eventArgs) { 
     if (someCondition) { 
      someelement.style.cssText = "background: url(Images/myImage.png) !important;" 
     } 
    } 
</script> 

选项2

<script type="text/javascript"> 
     function MyFunction(sender, eventArgs) { 
      if (someCondition) { 
       someelement.className = "someclass" 
      } 
     } 
    </script> 

其中,

<style> 
.someclass{ 
background: url(Images/myImage.png) !important; 
} 
</style> 

选项3

<script type="text/javascript"> 
      function MyFunction(sender, eventArgs) { 
       if (someCondition) { 
        someelement.setAttribute('style', 'background: url(Images/myImage.png) !important;'); 
       } 
      } 
     </script> 

下面是一个伪代码,

if(condition) 
    someelement.style.cssText = "background: url(Images/myImage.png) !important;"; 
+0

我更新了我的问题,能否再次看到它? – 2011-12-19 13:01:36

+0

是的,为for循环中的每个元素调用MyFunction。病毒更新挂起。 – 2011-12-19 13:03:01

+0

它被调用的每个元素,这是一个事件,我不能称它为特定的元素。 – 2011-12-19 13:03:56

您可以修改您需要的元素的样式属性。但更灵活的方法是用该css代码定义一个css类,并将该类添加到过滤的元素。

<script type="text/javascript"> 
    function MyFunction(sender, eventArgs) { 
     if (someCondition) { 
      someelement.style.backgroundImage = "url(Images/myImage.png)"; 
     } 
    } 
</script> 

!important是不必要在这里,因为内嵌样式覆盖非内嵌样式。

+4

+1(尽管您错过了“!重要在这里不重要”的机会)。 – nnnnnn 2011-12-19 13:47:42

想象一下,你有一个细胞id="myCell"和你的条件是真实的你想要什么。 现在你可以使用像这样做:

$(document).ready(functio() { 
    function SET(id) { 
     $('#'+id).css('background-image','yourNewImage.png'); 
    } 
    if (condition == true) { 
     SET('myCell'); 
    } 
}); 

使用.css,你可以任意值分配给每个CSS属性的每个元素。在这里我改变了背景图像。

+2

假设OP愿意添加jQuery库... – nnnnnn 2011-12-19 13:05:56