我的应用程序中有一个选项,用户可以停用其个人资料。只有管理员可以再次激活它们。
我有一类ActivateProfile有两种方法
ActivateProfile
userExist(userName)
activateAccountByUser(userName)
我在输入类型按钮的click事件上调用JavaScript函数。这段代码在Chrome和Mozilla上正常运行,但是在Internet Explorer上却出现此错误:
SCRIPT438:对象不支持属性或方法userExist
function activateProf() { var userName=document.getElementById("userName").value; if (userName == "") { alert("Полето е задолжително"); } else { alert(userName + "1"); ActivateProfile.userExist(userName, { callback:function(exist) { if (userName) { ActivateProfile.activateAccountByUser(userName); alert("User is activated"); } else { alert("User does not exist"); } }}); } }
这是激活配置文件类的代码
public void activateAccountByUser(String userName) { try { Connection c = DBComm.getInstance().getConnection(); Statement s = c.createStatement(); ResultSet set = s.executeQuery("select * from accounts where userName = '" + userName + "' and isauthorized='2'"); if (set.next()) { Statement st = c.createStatement(); st.executeUpdate("update accounts set isauthorized='1' where userName='" + userName + "' and isauthorized='2'"); } s.close(); c.close(); } catch (Exception ex) { java.util.logging.Logger.getLogger(ActivateProfile.class.getName()).log(Level.SEVERE, null, ex); } } public boolean userExist(String userName) throws SQLException { //true exist //false does not exist boolean existEmbg = false; try { Connection c = DBComm.getInstance().getConnection(); Statement s = c.createStatement(); ResultSet set = s.executeQuery("select * from accounts where userName = '" + userName + "' and isauthorized='2'"); if (set.next()) { existEmbg = true; } else { existEmbg = false; } s.close(); c.close(); } catch (Exception ex) { java.util.logging.Logger.getLogger(ActivateProfile.class.getName()).log(Level.SEVERE, null, ex); } return existEmbg; }
经过几天的搜索,我发现当html元素ID与javascript函数中的某些变量具有相同的id时,通常会发生此错误。更改其中一个的名称后,我的代码运行正常。