show/hide geeft Cannot read property 'addEventListener' of null

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Harry H Arends

Harry H Arends

09/09/2017 14:55:59
Quote Anchor link
Ik wil het wachtwoordveld op dit formulier formulier zichtbaar maken of verbergen. Om te testen heb ik een fiddle aangemaakt In de fiddle werkt het prima, maar op de pagina krijg ik de foutmelding in het onderwerp hierboven. Nu is mijn kennis van javascript minimaal dus enig idee waar dit fout gaat??
Gewijzigd op 09/09/2017 14:56:38 door Harry H Arends
 
PHP hulp

PHP hulp

30/11/2024 01:44:23
 
Frank Nietbelangrijk

Frank Nietbelangrijk

09/09/2017 15:28:30
Quote Anchor link
id="eye"

Ben je dat vergeten bij je button?
 
Adoptive Solution

Adoptive Solution

09/09/2017 15:42:33
Quote Anchor link
De eventlistener wordt uitgevoerd voordat de html geladen is.

Oplossing is om de JavaScript NA de html te plaatsen.

Andere oplossing is dit :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
document.addEventListener("DOMContentLoaded", function(event) {
    document.getElementById("eye").addEventListener("click", function() {
    if (pwShown == 0) {
        pwShown = 1;
        show();
    } else {
        pwShown = 0;
        hide();
    }
}, false);
});


Hier gevonden :

https://stackoverflow.com/questions/9899372/pure-javascript-equivalent-to-jquerys-ready-how-to-call-a-function-when-the

Toevoeging op 09/09/2017 16:00:11:

Je kan de eventlistener ook zo maken :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
document.addEventListener("DOMContentLoaded", function(event) {
    document.getElementById("eye").addEventListener("click", function() {
        var p = document.getElementById('pwd');
        if ( p.getAttribute('type') == 'password' ) {
            p.setAttribute('type', 'text');
        } else {
            p.setAttribute('type', 'password');
        }
    }, false);
});


Scheelt weer regels code.
Gewijzigd op 09/09/2017 15:44:56 door Adoptive Solution
 
Harry H Arends

Harry H Arends

09/09/2017 16:22:41
Quote Anchor link
Frank Nietbelangrijk op 09/09/2017 15:28:30:
id="eye"

Ben je dat vergeten bij je button?
Dit staat in de html
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
                <li><label for='password' >Password*:</label>
                <input type='password' name='password' class="masked" id='pwd' value = "<?php echo RandomPass(8);?>" maxlength="10" required  placeholder="Create a strong password"/>
                <button type="button" id="eye">
                    <img src="https://cdn0.iconfinder.com/data/icons/feather/96/eye-16.png" alt="eye" />
                </button> </li>




Toevoeging op 09/09/2017 16:28:39:

Adoptive Solution op 09/09/2017 15:42:33:
De eventlistener wordt uitgevoerd voordat de html geladen is.

Oplossing is om de JavaScript NA de html te plaatsen.

.....

Ik heb jouw oplossingen getest in de fiddle maar deze werken daar niet, echter verplaatsing naar het einde (jouw eerste suggestie ) is de oplossing.
Gewijzigd op 09/09/2017 16:32:10 door Harry H Arends
 
Adoptive Solution

Adoptive Solution

09/09/2017 16:34:23
Quote Anchor link
Ik heb beide oplossingen toegepast en het werkt zoals vermeid.

Misschien moet u het in uw webpagina uitproberen. Da's tenslotte de plek waar het bedoeld is.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

09/09/2017 16:41:25
Quote Anchor link
In ieder geval gaat het hier mis:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
document.getElementById("eye");


Het lukt dus niet om een HTML element te vinden met id="eye".

Je kan nog proberen om je code tussen de window.onload functie te plaatsen
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
window.onload = function() {
    document.addEventListener("DOMContentLoaded", function(event) {
        document.getElementById("eye").addEventListener("click", function() {
            var p = document.getElementById('pwd');
            if ( p.getAttribute('type') == 'password' ) {
                p.setAttribute('type', 'text');
            } else {
                p.setAttribute('type', 'password');
            }
        }, false);
    });
};
 
Harry H Arends

Harry H Arends

14/09/2017 15:13:41
Quote Anchor link
Dit geleerd/bekeken hebbende wilde ik een auto password generatie toevoegen.
De fiddle. Als ik echter zelf wat intik werkt het zichtbaar maken, maar ik kan geen wachtwoord aanmaken met de knop. Wat ben ik hiet vergeten? dit is de toegevoegde kode
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
function randomPassword(length) {
    var chars = "abcdefghijklmnopqrstuvwxyz!@#$%^&*()-+<>ABCDEFGHIJKLMNOP1234567890";
    var pass = "";
    for (var x = 0; x < length; x++) {
        var i = Math.floor(Math.random() * chars.length);
        pass += chars.charAt(i);
    }
    return pass;
}

function generatePW() {
    myform.new_password.value = randomPassword(myform.length.value);
}
 
Adoptive Solution

Adoptive Solution

14/09/2017 15:48:49
Quote Anchor link
Omdat nergens te zien is wat myform.length.value is, heb ik er dit van gebrouwen :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
function generatePW() {
    document.getElementById('pwd').value = randomPassword(document.getElementById('pwd').getAttribute('maxlength'));
}


Je moet tenslotte wat.

Toevoeging op 14/09/2017 15:57:45:

Als het om wachtwoorden gaat heb ik de voorkeur voor makkelijk te onthouden wachtwoorden.

En daar Latijn de laatste tijd in de mode is, waarom ook niet hier :

http://adoptive.esy.es/passwords/

Keuze uit 2800 Latijnse woorden.
 
Harry H Arends

Harry H Arends

14/09/2017 16:10:37
Quote Anchor link
Adoptive Solution op 14/09/2017 15:48:49:
Omdat nergens te zien is wat myform.length.value is,
Dat is niet waar, deze is er wel degelijk in de fiddle
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
            <li><label for='password' >Wachtwoord :</label>
                <input type='password' name='new_password' class="masked" id='pwd' value = "" maxlength="10" required  placeholder="Create a strong password"/>
                <button type="button" id="eye">
                    <img src="https://cdn0.iconfinder.com/data/icons/feather/96/eye-16.png" alt="eye" />
                </button>&nbsp;
                <input type="button" class="button" value="Generate" onClick="generatePW();" tabindex="2">
            </li>
 
Adoptive Solution

Adoptive Solution

14/09/2017 16:30:10
Quote Anchor link
Het zal er wel staan, maar ik zie het niet zo snel.

Lukt het met mijn oplossing wel?
 
Harry H Arends

Harry H Arends

14/09/2017 16:40:52
Quote Anchor link
Adoptive Solution op 14/09/2017 16:30:10:
Het zal er wel staan, maar ik zie het niet zo snel.

Lukt het met mijn oplossing wel?
Bedankt dat werkt
Het wachtwoord sla ik met deze waarde op in de database
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
hash('sha256', sha1(uniqid().$usr_PW."Stable-Management"));
Gewijzigd op 14/09/2017 16:44:48 door Harry H Arends
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.