2011-10-30 97 views
0

尝试下面的动态样式更改,但该功能不起作用。我用JSHint,一切都很好。动态样式更改方法失败

function styleInput(elClass,color) 
{ 
    "use strict"; 

    var document; 
    elClass = document.getElementsByClassName(elClass); 



var len = elClass.length; 

    for (var i=0; i < len;i++) { 

     if (elClass[i].className === elClass) 


       { 

        var tmp = elClass[i]; 


        tmp.style.backgroundColor = color; 

        tmp = " "; 





       } 

     } 




} 

styleInput("fm_bushido", "#f3f3f3"); 

----- ----- HTML

<!DOCTYPE html> 
<html> 
<head> 
<meta charset=utf-8 /> 
<title>JS Bin</title> 
<!--[if IE]> 
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
<![endif]--> 
<style> 
    article, aside, figure, footer, header, hgroup, 
    menu, nav, section { display: block; } 
</style> 
</head> 
<body> 
    <input type="text" name="name" class="fm_bushido txt" placeholder="Name:"></input> 
</body> 
</html> 

回答

0

您使用的是可变elClass两次改写传递给函数与从document.getElementsByClassName(elClass);返回的值。一旦脚本下降到if (elClass[i].className === elClass),您将比较元素的类名称与元素本身,而不是您传递给函数的值(fm_bushido)。

只需更改其中一个元素的名称即可。

+0

谢谢,开始一个FormClass动态创建窗体,没有什么独特的,只是一个OOP代码示例。你能否提出一个关于以“classname classname”格式传递类名的问题。获取空间之前或之后的内容? – Wasabi

+0

如果可以的话,使用[jQuery](http://jquery.com/)...它会使你更容易 – Clive