Avatar billede andreas13_fam Nybegynder
14. juni 2010 - 15:17 Der er 5 kommentarer og
1 løsning

addEventListener til HTMLElement

Når jeg forsøger at bruge
window.HTMLInputElement.prototype.addEventListener
For jeg i FireFox 3.6 fejlen:

Fejl: uncaught exception: [Exception... "Illegal operation on WrappedNative prototype object"  nsresult: "0x8057000c (NS_ERROR_XPC_BAD_OP_ON_WN_PROTO)"  location: "JS frame :: http://webform.netkogeren.dk/webform2.js :: anonymous :: line 59"  data: no]


Er der nogen der kender en måde at tilføje et event på alle input elementer, som gælder med det samme og ved fremtidige uden at jeg skal ud i:

var input = document.createElement('input');
input.addEventListener(event,func,type);

hver gang jeg skal lave et element

I kan se eksemplet her : http://webform.netkogeren.dk/
JS filen ligger her http://webform.netkogeren.dk/webform2.js

og er rigligt kommenteret
Avatar billede tjens Nybegynder
14. juni 2010 - 16:25 #1
2 muligheder:

1.) Læg dine kodelinierne i en function som returnerer det nye inputfelt:
    Så skal det kun bruges 1 linie når de oprettes:
    var input = newDefaultInput();

2.) Skab et input i starten af scriptet (som ikke vises på skærmen)
    Dan så de nye inputs med:
    var input = defaultInput.cloneNode(true)
Avatar billede andreas13_fam Nybegynder
15. juni 2010 - 13:18 #2
De 2 løsninger syntes jeg er næsten identiske med
var input = document.createElement('input');
input.addEventListener(event,func,type);

Det jeg søger er en løsning der tilføjer et event til alle input. Hvis jeg bruger din metode, skal jeg også til at omskrive alt andet kode, hvilket jeg ikke ønsker.
Avatar billede tjens Nybegynder
16. juni 2010 - 22:45 #3
Du kan danne en array med alle inputs med
var inputs = document.getElementsByTagName('input');
og herefter loope arrayet og udføre addEventListener på alle.
Avatar billede andreas13_fam Nybegynder
16. juni 2010 - 23:28 #4
Hvordan vil det påvirke fremtidige elementer, lavet med createElement?
Avatar billede tjens Nybegynder
17. juni 2010 - 07:36 #5
Jeg er ikke sikker på, at jeg forstår hvad du spørger om.

Kan du ikke teste det, ved at skrive et mindre script?
Og så vende tilbage med mere detailerede spørgsmål, hvis der er problemer.
Avatar billede andreas13_fam Nybegynder
17. juni 2010 - 10:36 #6
Jeg ønskede en løsning hvor der blev kørt en kode hvergang et bestemt element blev dannet via javaScript.
Jeg ønskede også at koden blev kørt for hver element der var i forvejen, men det var ikke problemet.

Men jeg opfandt selv en løsning idag, selvom det sikkert er set før.


        window.webform2 = {
            singelElement : function (name) {
                alert(name);
            }
        };

        document._createElement = document.createElement;
       
        alert(document._createElement);
        document.createElement = function (name) {
            var element = document._createElement(name);
            window.webform2.singelElement(element);
            return element;
        }

        document.createElement('input');
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester