我有3个表单(用于登录,注册和密码恢复),以及以下代码:
@timepoint.expression
此代码在我的主页My_TimePoint_Mixin.timepoint
上完美运行,该主页仅包含注册表单和登录表单,但如果我将My_TimePoint_Mixin().timepoint
(仅包含密码恢复表单)添加到地址行,脚本将不再起作用。 (实际上,它可以工作,如果我用最后一个替换最后一个if / else,但是其他的将不起作用 - 第一个和第二个if / else)。
我该如何解决这个问题?
答案 0 :(得分:1)
尝试更改您的代码:
document.querySelector('body').onkeyup = function() {
/* login */
if(
(null !== document.getElementById(login['user']) &&
'' !== document.getElementById(login['user']).value) &&
(null !== document.getElementById(login['pass']) &&
'' !== document.getElementById(login['pass']).value) {
document.getElementsByName(names['login'])[0].removeAttribute('disabled');
}
else ...
答案 1 :(得分:0)
仅包含密码恢复表单
如果它只包含该表单,那么代码将点击第一个getElementById
语句,从中获取null
,然后尝试阅读value
null
1}}。
这将引发异常,应该在浏览器的开发者工具的控制台中显示。 (注意:在询问有关代码的问题时,查看控制台并引用错误消息非常重要,类似地,您应该提供[MCVE],其中包含足够的HTML来重现问题)。
由于您收到异常,JS将中止。
在尝试使用之前,您需要从getElementById
获取返回值,然后检查它是否为真值(带if
)。
答案 2 :(得分:0)
首先检查您是否可以使用代码简单警报。
document.addEventListener('DOMContentLoaded', function() {
var
login = {
user: 'afy-usr-log',
pass: 'afy-pas-log'
},
register = {
user: 'afy-usr-reg',
pass: 'afy-pas-reg',
mail: 'afy-eml-reg'
},
forget = {
user: 'afy-usr-psf',
captcha: 'afy-cpt-psf'
},
names = {
login: 'afy-usrlog',
register: 'afy-usrreg',
forget: 'afy-usrpsf'
};
document.querySelector('body').onkeyup = function() {
//alert("You are in body");
console.log(document.getElementsByName(names));
}
});