JavaScript仅适用于第一页

时间:2016-09-14 09:54:33

标签: javascript html dom

我有3个表单(用于登录,注册和密码恢复),以及以下代码:

@timepoint.expression

此代码在我的主页My_TimePoint_Mixin.timepoint上完美运行,该主页仅包含注册表单和登录表单,但如果我将My_TimePoint_Mixin().timepoint(仅包含密码恢复表单)添加到地址行,脚本将不再起作用。 (实际上,它可以工作,如果我用最后一个替换最后一个if / else,但是其他的将不起作用 - 第一个和第二个if / else)。

我该如何解决这个问题?

3 个答案:

答案 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));


       }
});