[javascript] Prosty formularz jako skryptozakładka

0

Witam,
Chciałem stworzyć prosty formularz który by się uruchamiał na dowolnej stronie. Ale niestety coś jest nie tak.

(function(){
    var E = function(n, d, s) {
        var x = document.createElement(n);
        for(var k in d) {
            x.setAttribute(k, d[k]);
        }
        for(var i in s) {
            x.style[i] = s[i];
        }
        return x;
    }

    var f = E('form', {'method':'post', 'action':'/login'},
        {'position':'absolute', 'top':'2em', 'right':'1em'});
    var l = E('input', {'type':'text', 'name':'ksywka'}, {});
    var p = E('input', {'type':'password', 'name':'haslo'}, {});
    var s = E('input', {'type':'submit', 'name':'', 'value':'Zaloguj'}, {});
    f.appendChild(l);
    f.appendChild(p);
    f.appendChild(s);
    document.body.appendChild(f);
})();
0

Co jest nie tak? Co zrobiłeś, żeby się dowiedzieć? Jak to debugowałeś?

Wygląda na to, że się trochę leniłeś. Zwykła konsola Firefoxa wystarczy, by zobaczyć komunikat o błędzie, jaki powstaje po uruchomieniu skryptu skompresowanego do jednej linijki. Bo domyślam się, że to jest ten błąd, o który Ci chodzi -- niestety ani nie zamieściłeś tak skompresowanego kodu, ani nie napisałeś, że w ogóle wykonujesz ten krok i że to wtedy coś nie działa.

Deklarujesz funkcję E za pomocą instrukcji var. Podstawiasz pod zmienną E funkcję anonimową. Pamiętaj jednak, że to zwykła instrukcja var i powinna zostać zakończona średnikiem. Ty ten średnik opuściłeś. Na skutek błędu projektowego, JavaScript sam sobie ten średnik dopisał w miejscu przejścia do nowej linii zaraz za funkcją anonimową. Dlatego wersja wielolinijkowa jest poprawnym kodem JavaScript. Ale wersja skompresowana do jednej linijki już nie -- średnik nie jest automatycznie wstawiany i otrzymujesz błąd.

Polecam Ci korzystać z narzędzi wspomagających pisanie JavaScriptu. Ja bardzo długo myślałem, że jestem fajny używając VIM-a i bojąc się "tych wszystkich wymysłów". Tymczasem konsola Firefoxa zgłasza i precyzyjnie wskazuje błąd w czasie wykonania skryptu (Firebug też), a gdybyś pisał to np. w Eclipsie z pluginem JsEclipse, to otrzymał byś ostrzeżenie o braku średnika już podczas pisania skryptu, a nie podczas próby uruchamiania.

Mam nadzieję, że to o ten błąd Ci chodziło. U mnie po poprawieniu tego błędu i spakowaniu packerem wszystko śmiga.

0

Dzięki,
Wszystko ładnie działa aż wstyd się przyznać, że nie widziałem. Po prostu późna pora i już byłem w stanie nie bardzo kojarzącym :D

Dzięki jeszcze raz za pomoc :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1