2011-02-12 57 views
0

我想通过我玩的元素的名称,然后更改其类。我从另一个函数调用这些函数。JavaScript制作变量元素

function addErrClass(field){ 
     field.removeClass("valid"); 
     field + Info.removeClass("valid"); 
     field.addClass("error") 
     field + Info.addClass("error"); 
    } 
    function addValClass(field){ 
     field.removeClass("error"); 
     field + Info.removeClass("error"); 
     field.addClass("valid") 
     field + Info.addClass("valid"); 
    } 

我通过

if(data == "yes") 
      { 
      addErrClass('name'); 
      nameInfo.text("Please choose another usename, " + checkuser + " is in use");     
      } else { 
      addValClass('name'); 
      nameInfo.text("Awesome, " + checkuser + " is available"); 
      } 

调用这些函数每个元件都被赋予了变量名:接收

var name = $("#nuser");  var nameInfo 
    = $("#nuserInfo"); var email = $("#email"); var emailInfo = 
    $("#emailInfo"); 

错误:

未捕获的类型错误:对象名有没有方法'removeClass'

基本上我试着去实现与各功能

name.addClass以下 或 email.removeClass

我将在很多领域用这个,但认为ID尝试和代码保持在最低水平为我的问题。

编辑答案。感谢

if(data === "yes") 
{ 
    addErrClass(name); 
    addErrClass(nameInfo); 
    nameInfo.text("Please choose another usename, " + checkuser + " is in use");     
} else { 
    addValClass(name); 
    addValClass(nameInfo); 
    nameInfo.text("Awesome, " + checkuser + " is available"); 
} 

回答

1

您正在将'name'作为字符串传入函数。由于String类型没有名为'removeClass'的方法,因此您收到此错误。这个方法只存在于jQuery对象上。

既然你说你已经实例化一个变量,名为名称是一个jQuery对象,试试这个:

if(data === "yes") 
{ 
    addErrClass(name); 
    nameInfo.text("Please choose another usename, " + checkuser + " is in use");     
} else { 
    addValClass(name); 
    nameInfo.text("Awesome, " + checkuser + " is available"); 
} 
1

你似乎是传递字符串'名称'您的函数,而不是包含您的jQuery对象的变量名称。字符串对象上没有removeClass方法。

+0

这是不正确的方法。我认为JavaScript会说,好的名字是一个对象,我可以.addClass它。这就是为什么我有字段+ Info.addClass()也......我想这不是正确的做法 – goingsideways 2011-02-12 06:24:54