Keresés

Új hozzászólás Aktív témák

  • zhagyma
    őstag

    nem ugyan ezt mondtam en is? :F :D

    Nekem úgy tűnt a teljesen php által generált html kódról írtál. Én egy html file-ba beszúrt php kódrészletről beszéltem. Gondoltam a kollégának így szemléletsebb lehet, mivel egy index.html file-ba együtt látja a javascipt- és php kódokat ... A végeredmény ugyanaz.
    Bocs, ha félreértettelek ... :B

  • zhagyma
    őstag

    Köszönöm a választ!

    Ó ezt sajnálattal hallom. :(

    Mindenkeppen kell valami szerver oldali cucc ami az adatbázisból kinyeri neked az infot.

    Valami olyasmire gondolsz ami leszedi az adatbázisból (pl egy php oldal) és esetleg beírja azt egy fájlba mondjuk egy valami.txt-be? És esetleg ebből a fájlból már a JS ki tud venni adatokat? Vagy nagyon félresiklott ez a gondolatmenet? :DDD

    " ... A php mar eloallit neked egy html kodot amit megjelenit a bongeszo. ..."

    Vagy a html kódba beágyazod a php kérést, amit a "szerver" php értelmezője végrehajt. A php lefutásának eredménye pedig "beágyazásra" kerül a html kódba pont a hívás helyén. Mindez a html lekérése és kiküldése között hajtódik végre. Akár a javascript kód statikus paramétereit is átírhatod ezen a módon.

  • zhagyma
    őstag

    Hello!

    Megvalósítható JavaScript-ben az, hogy egy input text mezőbe írok szöveget, és egy adott "a" karaktert cseréljen ki "b"-re, de beírás közben, ne submitkor, vagy a mező elhagyásakor. Tehát nem is szeretném látni az "a"-t, csak a "b"-t.

    Petya

    Egy lehetséges megoldás: A HTML4 szabvány szerint az "input text" mezőnek van onChange eseménye, amely akkor hívódik meg, ha az elem elveszítette a fókuszt, vagy ha megváltozott a mező tartalma. Ennek előfeltétele, hogy a fókusz éppen rajta legyen.

    Szóval, minden egyes karakter begépeléskor meghívódik az onChange eseményhez rendelt eseménykezelő függvény, amelyben a betűcsere is végrehajtható.

  • zhagyma
    őstag

    cs!

    Nekem ezt dobja ki folyatosan,ez amit linkeltél az a biblia magyarul van,mert no speak english :O

    Nekem [ezt] adja ki. Sajnos angol a biblia.

  • zhagyma
    őstag

    Nem jó a link!! :O :O

    Esetleg valami pdf fromatáumú könyvet nem tudsz ami letölthető lenne?

    De jó a link! Nekem most is bejön. Viszont itt elérheted a JavaScript bibliát: [link]

  • zhagyma
    őstag

    Mivel tudom lejátszani a sriptet? Vagy hogy működik ez?

    Amennyiben ezt megkérdezed, akkor a javascriptet itt is lehetne kezdeni: [JavaScript 1.3].

    Természetesen raczger válaszával egyet értve, böngészőn kívűl is futtatható javascript. Ebben az esetben viszont nem használhatod a böngészők által nyújtott host objektumokat, stb.

  • zhagyma
    őstag

    Sziasztok!

    Érdekelne engem ez a dolog a JAva script-vel kapcsolatban,de nem tom,hogy álljak neki. Esetleg valami online irodalom? Milyen fejlesztő környezet kell,ha egyeltalán kell hozzá? :U

    Fejlesztői környezet minimum "notepad", maximum Eclipse. Irodalom: [link]

  • zhagyma
    őstag

    Utolsó kérdésem: Létezik erre valami globális megoldás, ami kiküszöböli azt, hogy minden egyes aloldalon, ahol alkalmazni akarom a tablecloth-ot le kelljen futtatnom a függvényt?

    Valamint ha nem, akkor hogyan tudom én ezt mindig lefuttatni anélkül, hogy minden egyes oldalra újra be kelljen szúrnom az egész szkriptet?

    Tudom, hogy nagyon alap kérdések, de semmi ismeretem nincs Javascript terén és hiába vagyok én jó egyéb dolgokban, ez teljesen kínai egyenlőre.

    U.i.: Köszönöm a mintát (törölheted), valamint az eddigi segítséged és magyarázataid is, értem a problémát és a megoldást is, csak kivitelezni nem tudom. :)

    Ok. PHP esetén az első lekérés során letöltődik a teljes kezdőlap scriptestől. Az "ajax"-os menüben kattintva kérsz a PHP-tól egy HTML kódtöredéket (táblázat). Amikor megkapod beilleszted a javascript segítségével az oldal megfelelő helyére a kapott stringet (node.innerHTML = string) és meghívod start() függvényt. Dióhéjban ennyi lenne a részletek nélkül.

  • zhagyma
    őstag

    Köszönöm a fáradozásaidat, ez már valóban jobb, annyiból legalábbis biztosan, hogy a "body onload" részt teljesen száműztem és a tablecloth.js általad írt utolsó pár sora végzi el ezt a feladatot (sikeresen.)

    Az ajax menü szépen működik és ha a főoldalon levő táblázatnak "table1" class-t adok, akkor a tablecloth is végzi a dolgát szépen, de... az a baj, hogy nekem nem a főoldalon vannak a táblázataim és ha a menüpontokra kattintgatok ott már megáll a script tudománya, ugyanis az almenükön belül hiába "table1" class-al rendelkeznek a táblázatok, mégsem reagálnak semmire.

    Ennek a gondja sajnos valószínűleg a PHP kód azon része lesz, ami az oldalak betöltéséért felelős:

    <?php
    $page=$_GET[page];
    if(!isset($page)){
    include "kezdolap.php";
    }else{
    $vanea=is_file($page.'.php');
    if(empty($vanea)){
    $vanea="0";
    }
    if($vanea==1){
    include "$page.php";
    }else{
    include "nincs.php";
    }
    }
    ?>

    Viszont valószínűleg így nem is lehet megoldani a dolgot :( Csak úgy tudtam eddig is működésre bírni mindkettőt, ha az aloldalakon belül is létrehoztam egy <head> részt és mindegyikben külön betöltöttem a tablecloth.js scriptet, de ez így nem éppen szabványkövető megoldás és a W3C Validation is kifogásolja. :U

    Ha esetleg van valami ötleted szívesen fogadom, de ha ez így nem megoldható, akkor kénytelen leszek beletörődni és csak az egyiket használni, még ha jól is néztek ki együtt.

    A tablecloth.js-ben van egy start() függvény, amely a lefutásakor a html oldalon található mindel egyes class="table1"-es table-hoz hozzárendel mouse eseményeket, stb. Ez csak akkor fut le, amikor a page betöltődik. Ha ezután "illesztesz" be új táblákat az oldalra újratöltődés nélkül a "menükattintás" következtében, akkor újra le kell futtani a Start() függvényt.

    Ui.: Akkor letörlöm a mintát.

  • zhagyma
    őstag

    Szia!

    Kiprobáltam, igaz csak gyorsban és nem tökéletes, de mindket script reagált a click eseményre. Kiindulasnak szerintem jó lesz. Ez volt a html:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="hu" xml:lang="hu">
    <head>
    <title>index</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="Content-Language" content="hu" />
    <!-- stylesheet -->

    <link rel="stylesheet" href="stylesheet/tablecloth.css" type="text/css" media="screen" />

    <!-- JSL -->
    <script src="javascript/accordian_pack.js" type="text/javascript"></script>
    <script src="javascript/tablecloth.js" type="text/javascript"></script>
    </head>
    <body>

    <div id="basic-accordian">basic</div>
    <div id="test-header">header</div>
    <div id="test-content">
    <div class="accordion_child">
    Valami szoveg
    </div>
    </div>

    <table class="table1" cellspacing="0" cellpadding="0">
    <tr>
    <td>&nbsp;</td>
    <th>Title</th>
    <th>Title</th>

    <th>Title</th>
    </tr>
    <tr>
    <th>Title</th>
    <td>Data</td>
    <td>Data</td>
    <td>Data</td>

    </tr>
    <tr>
    <th>Title</th>
    <td>Data</td>
    <td>Data</td>
    <td>Data</td>
    </tr>

    <tr>
    <th>Title</th>
    <td>Data</td>
    <td>Data</td>
    <td>Data</td>
    </tr>
    </table>
    </body>
    </html>

    A tablecloth.js-be pedig ez került. Kiváltottam függvényhívással az eseménykezelő hozzárendelést.

    /* script initiates on page load. */
    //window.onload = tablecloth;

    window.onload = function() {
    new Accordian('basic-accordian',5,'header_highlight');
    tablecloth();
    };

    Eddig ezeket a scipteket nem ismertem. Kicsit bele kellett kukkolnom.

    Feltettem egy kibővített mintát ide: [link]
    Ha megnézted, kérlek jelezd hogy letörölhessem. Ha nem jelzel 2 nap múlva letörlöm.

  • zhagyma
    őstag

    Sajnos nem sikerült megoldanom a problémát :(

    Mindent úgy tettem, ahogy írtad, a 2 kódot js fájlba tettem, ellenőriztem, mindkettő működik külön külön.

    Alapértelmezetten egyiket a következő paranccsal kell meghívni:

    <script type="text/javascript" src="accordian.pack.js"></script>

    Majd:

    <body onLoad="new Accordian('basic-accordian',5,'header_highlight')">

    Ezzel működik is tökéletesen (ez egy Ajax menü szkript)

    A másikat pedig egy sima

    <script type="text/javascript" src="tablecloth/tablecloth.js"></script>

    paranccsal, így a megadott ID-re alapértelmezetten aktívvá válik. Viszont a kettőt együtt sehogyan nem tudom életre kelteni. Beillesztettem a tablecloth.js fájl végére az általad írt sort, kicseréltem a masik_function-t a "new Accordian('basic-accordian',5,'header_highlight')" -al, de így sem működik. Csak az egyik vagy csak a másik...

    Lehet valami triviális apróságot bénázok el, de már órák óta próbálkozom és egyszerűen kikészít, hogy nem tudom megoldani ezt a problémát :(((

    Szia!

    Kiprobáltam, igaz csak gyorsban és nem tökéletes, de mindket script reagált a click eseményre. Kiindulasnak szerintem jó lesz. Ez volt a html:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="hu" xml:lang="hu">
    <head>
    <title>index</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="Content-Language" content="hu" />
    <!-- stylesheet -->

    <link rel="stylesheet" href="stylesheet/tablecloth.css" type="text/css" media="screen" />

    <!-- JSL -->
    <script src="javascript/accordian_pack.js" type="text/javascript"></script>
    <script src="javascript/tablecloth.js" type="text/javascript"></script>
    </head>
    <body>

    <div id="basic-accordian">basic</div>
    <div id="test-header">header</div>
    <div id="test-content">
    <div class="accordion_child">
    Valami szoveg
    </div>
    </div>

    <table class="table1" cellspacing="0" cellpadding="0">
    <tr>
    <td>&nbsp;</td>
    <th>Title</th>
    <th>Title</th>

    <th>Title</th>
    </tr>
    <tr>
    <th>Title</th>
    <td>Data</td>
    <td>Data</td>
    <td>Data</td>

    </tr>
    <tr>
    <th>Title</th>
    <td>Data</td>
    <td>Data</td>
    <td>Data</td>
    </tr>

    <tr>
    <th>Title</th>
    <td>Data</td>
    <td>Data</td>
    <td>Data</td>
    </tr>
    </table>
    </body>
    </html>

    A tablecloth.js-be pedig ez került. Kiváltottam függvényhívással az eseménykezelő hozzárendelést.

    /* script initiates on page load. */
    //window.onload = tablecloth;

    window.onload = function() {
    new Accordian('basic-accordian',5,'header_highlight');
    tablecloth();
    };

    Eddig ezeket a scipteket nem ismertem. Kicsit bele kellett kukkolnom.

  • zhagyma
    őstag

    ez a doctype:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">

    s ie7 alatt nem megy :(

    Pedig kéne, bár IE8RC1-t tesztelek. W3C xhtml1.0 esetén a szabályos fejléc:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="hu" xml:lang="hu">
    <head>
    <title>index</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body />
    </html>

    Az xhtml1.0 dokumentumnek, be kell tartani az xml szabályokat, különben az IE átkapcsol kompatibilis módba és olyan lesz mint az IE6 (IEdeveloper megmondja milyen módban van).Ha igy sem megy végezz egy W3C xhtml validációt. Végszükségben, használd az alábbi függvényt, ami biztosítja a kompabilítást visszafelé:

    function id( document, id ) {
    return ( document.getElementById ? document.getElementById(id) : false ) ||
    ( document.nodeFromID ? document.nodeFromID(id) : false );
    },

  • zhagyma
    őstag

    van egy formom, amiben van pár mező aminek az id-jei ('lastname', 'firstname', 'username', 'email', 'passwd', 'passwd_re') ki vannak töltve, s van egy submit (id=send) mező, aminek szintén van id mezője. A script azt csinálja, ha nincsennek kitöltve az adott mezők, akkor a send -et disabledezi.

    a kód ami FF alatt megy, de ie alatt nem:

    function reg_enabled() {
    button_dis = false;
    var elemek = new Array('lastname', 'firstname', 'username', 'email', 'passwd', 'passwd_re');
    for (var i = 0; i < elemek.length; i++) {
    elem = document.getElementById(elemek[i]);
    if (elem.value == '') {
    button_dis = true;
    }
    }
    if (button_dis) {
    document.getElementById('send').disabled = true;
    } else {
    document.getElementById('send').disabled = false;
    }
    }

    miért nem megy ie alatt?

    IE6 és az alatti verziószám alatt a Microsoft esetén: document.nodFromID( id ).
    IE7/IE8 szabványos mód (w3c DOCTYPE kitöltve) document.getElementById( id )

  • zhagyma
    őstag

    "... Lehet valahogy nem esemény alapon javascript függvényt meghívni? ...

    Lehet eseményből és sima függvényhívással is meghívni javascript függvényt. Itt nem tudom, pontosan mire gondolsz?"

    Php oldal, mysql adatbázissal. Ha bizonyos adatok ilyenek/olyanok az adatbázisban, akkor nekem kell oda egy javascript a kliens gépére, ami lefut, különben nem.

    Értem. A szerver oldalon, gondolom a mysql-ből származó adatokkal egy stringbe bekerül a html oldal forráskódja. Minden egyes html elemhez a W3C HTML szabvány definiál előre meghatározott eseményeket. Ezen eseményekhez eseménykezelő rendelhető a HTML forráskódban a php stringbe beírva:.

    var $str = "<input type=\"text\" onclick=\"function() { ... javascript utasítások ... }\"";

    egy eseménykezelő függvénynél megírásánál érdemes tudni:

    function( event ) {
    // Az event object átadásra kerül az event kezelő függvénynek, kivéve IE.
    // IE esetén window.event az event.
    if (!event) { var event = window.event };

    // this változó a html elemre mutat, vagy meghatározható így is
    var node = ( event ? (event.target || event.srcElement) : undefined );

    ... // A kódod

    };

  • zhagyma
    őstag

    Hali!

    Akkor mégsem kérdeztem hüleséget... :DDD , kösz a választ!
    Írtad, hogy "Nem rossz könyv első nekifutásra", gondolom akkor van jobb is... :U
    Esetleg tudnál javasolni, nagyon jó könyvet JS témakörben, amiben tényleg minden de minden benne van?(az összes létező JS függvény, ezek részletes leírása, közép és felsőfokú JS programozás-technikák, stb)

    Fire.

    UI: nem gond ha angol, sőt az lenne a jobb... :DDD

    Szia!

    Jobb összzefoglaló művet nem ismerek. Hamar felhagytam velük, de az Apress sok kiadványt adott ki a Javascript, az Ajax, a webfejlesztés témakörében, ahol a kialakított kliens oldali javascript technikák részletesen tárgyalásra kerülnek némi szerver oldali körítéssel (Professional sorozat). Mivel minden szabvány és gyártói megoldás nyitott és jól specifikált (na jó nem mind), ezért az alábbiak tanulmányozása javasolt:

    Az összes létező javascript függvény: [ECMA 262 version 3]. és a kapcsolódó [ECMA 357] E4X az XML kiterjesztés, mely utóbbi csak részlegesen támogatott a böngészők által.

    A javascript "beágyazott" nyelv. Minden megvalósítás egy host környezetből indul és onnan örököl objektumokat, s így azok a javascriptből elérhetők. A nagy böngésző gyártók fejlesztői információi igen hasznosak ez ügyben (gyártói developer oldalak). A Firefox 3.1, IE8RCx, Safari3.x, Google Crome 1.x, Oprea9.6 szinte hibátlanul implementálják a W3C DOM1 / DOM2 / DOM3 szabvány általánosan használatos részeit (ezen keresztül lehet hozzáférni az aktuális html / xml dokumentum elemeihez). Így a böngészők közötti eltérések egyre kisebbek, azaz nyugodtan alkalmazhatók a. [W3C DOM szabványok]. Az Opera9.6 alap javascript megvalósítása "kicsit" hibás, de kivételkezeléssel áthidalható.

    A javascript technikák legjobban az Open Source Javascript keretrendszerek forráskódjának tanulmányozásával ismerhetők meg. Az itt megjelenet "újdonságok" kerülnek kielemzésre néhány év múlva a szakkönyvekben:
    [YAHOO], [Prototype], [ExtJS] és van még egy rakat a teljesség igénye nélkül. Szerintem egy gyöngyszem ezek közül a [qooxdoo], mint OOP megvalósítás.

  • zhagyma
    őstag

    Hali!

    Köszönöm a tökéletes elemzést! :R
    (az IF-el nem kellett volna bajlódnod.. :DDD )

    Ehhez kapcsolódva;
    Mint ahogy írtam, ez egy működő JS-kód részlete, tehát biztos nem feleslegesen van bent az a sor... :U
    Ezek szerint van olyan objectum, aminek van ilyen attributuma?
    Esetleg saját "készítésű" objectum, saját "készítésű" attributummal?

    Nézd el ha butaságokat kérdezek, de számomra még új a javascript...
    Az eredeti végzettségem rendszerprogramozó, úgy hogy elég gyorsan sajátítok el más programozás-nyelveket, csak a JavaScript Bible 6th Edition könyvben, még nem jutottam el idáig... :DDD
    Lehet, hogy pár nap múlva, magamtól is rájövök, hogy mekkora hüleséget kérdeztem.. :W

    Fire.

    Nem rossz könyv első nekifutásra. Valóban nem feleslegesen van ott az a sor.

    Készíthető "saját" DOM elem (node) a DOM beépített createElement függvényével.

    Egy DOM elemnek lehet "bármilyen" nevű (UTF-16 / UNICODE) attributuma (vannak lefoglalt attributum nevek HTML estén, de XML-ben ez a korlát megszűnik).

    Ha érdekel a szabvány [itt] megtalálhatod a különböző verziókat. A "Core"-al célszerű kezdeni.

    Ui.: Nem butaság kérdezni. Tanulni meg előny. A programozói lét úgyis a holtig való tanulásról szól.

  • zhagyma
    őstag

    Hali!

    Valaki tudná értelmezni nekem ezt a JS sort?
    (az objID az egy TABLE objektum ID-je)

    var obj = document.getElementById(objID);
    var state = obj.getAttribute("hm.state");
    if (state == null) { state = "0" };

    A programrészlet 2. sora érdekelne, mert a getAttribute az egy adott objektum általam kívánt attributumát adja vissza.
    Viszont a TABLE objektumnak nincs STATE pláne nem HM.STATE attributuma... :F

    Fire.

    UI: a programrészlet egy kifogástalanul működő JS-ből van.

    Az elemzés amit kértél - figyelembe véve - hogy a TABLE DOM objektumnak nincs hm.state attributuma:

    var state = obj.getAttribute( 'hm.state' )

    A getAttribute függvény mindig String típussal tér vissza. Ha nem létezik a node-nak attributuma, vagy annak nincs értéke, akkor a getAttribute fuggvény a state = "" (empty string) értékkel tér vissza a W3C DOM szabvány szerint.

    if (state == null) { state = "0" };

    A state (String type) értéke összehasonlításra ( == ) kerül a null (Null type) értékkel. Ez az összehasonlítás egy esetben ad true értéket az ECMA 262.3 szabvány szerint, ha a state = "" (empty string).

  • zhagyma
    őstag

    Sziasztok!

    Van nekem egy javascriptem, amivel a honlapon szereplő táblázatokat lehet szebbé varázsolni. (Erről van szó: [link]) Működik tökéletesen, már kicsit meg is lett moddingolva, hogy ne minden táblázatra legyen hatással, hanem csak a megadott class-ra. Viszont van egy gondom vele. Az oldalon szerepel egyéb szkript is, méghozzá a body onload részben kerül betöltésre. A táblázatos szkript fórumát átböngészve akadtam rá, hogy ebben az esetben vagy az egyik nem fog működni vagy a másik és ez így is van, tehát kiütik egymást, ha az egyik megy, akkor a másik nem. (Attól függ hova helyezem el a szkript betöltését:

    <script type="text/javascript" src="tablecloth/tablecloth.js"></script>

    . Ha a <head> részbe akkor az oldalon szereplő eredeti szkript megy, ha a <body> részbe akkor a táblázatos működik, de az eredeti nem :D Nekem viszont mindkettőre szükségem lenne.

    A fórumon ezt írták a problémára: "Use an addEvent function to add the onload event, the script will not work if someone put another onload attribute on body tag."

    No igen, csak ehhez én már kevés vagyok. Aki tudna esetleg segíteni benne, hogy átszerkeszti nekem ezt a táblázatos szkriptet ilyen formában azt megköszönném.

    Itt a forráskód: [link]

    :R

    Úgy van, ahogy írták, de helyetted nem írom meg. Mindkét javascipt kódot tedd ...js file-ba. Add meg a <HEAD> részbe. Az utolsó javascipt file végére írd be:

    function add( node, name, handler) {
    if (node.addEventListener) {
    node.addEventListener( name, handler, false );
    } else {
    node.attachEvent( 'on' + name, handler );
    };
    };

    add( window.document.body, 'load', masik_function );
    add( window.document.body, 'load', tablecloth );

    mod: vagy window.document.body, vagy window. Régen használtam ...

  • zhagyma
    őstag

    Egy legördülő listából kiválasztva egy eredményt, az onChange metódussal Ajaxszal frisstek egy div-et az oldalaom. Ez teljesen nagyszerű, de: alapból nem jön be semmi. Hogyan lehetne betenni valami alapállapotot neki? Lehet valahogy nem esemény alapon javascript függvényt meghívni? Érdekes módon body onload-dal se ment a dolog.

    Feltételezem, hogy hibakeresést folytatsz. Amenyiben nem az alapoktól írtad a javascript kódot, hanem valamilyen kererendszert használsz, jó lenne tudni melyiket? Úgy általában:

    1. Ajax (XMLHttpRequest = XHR) eredmény, akkor jó szinkron és asszinkron esetben is, ha:

    if ((XHR.readyState == 4) && (XHR.status == 200)) {
    window.alert( XHR.requestText ); // sima szoveg
    window.alert( XHR.requestXML ); // XML DOM, amennyiben xml file-t küld a server
    };

    2. Ha nincs serveroldal megvalósítás, akkor is használhatod asszinkron esetben:

    XHR.onreadystatechange = function() {
    ... // alapállapot a div-be, vagy amit szeretnél.
    };


    ... Lehet valahogy nem esemény alapon javascript függvényt meghívni? ...

    Lehet eseményből és sima függvényhívással is meghívni javascript függvényt. Itt nem tudom, pontosan mire gondolsz?

  • zhagyma
    őstag

    Van egy csomó regisztrációs kérelem, ezek egy oldalon vannak egymás alatt felsorolva. Mindegyikhez tartozik egy Engedélyez és egy Töröl gomb.
    A kérdés csak az, hogy hogyan érdemes megoldani a küldést:

    - egy formban az egészet, és a gombok sima button-ok ilyenkor (mert gondolom egy formban csak egy submit lehet)

    - mindegyik kérelem külön form, így egy formhoz 2 gomb tartozik (bár ez megint hasonló eset, mert itt is sima buttont kell berakni, nem?)

    - vagy ne nyomógombokat használjak, hanem mondjuk radio-gombokat, és az egész oldal alján legyen egyetlen Submit gombot?

    Szia! Én egy formba raknám egy submit gombbal. A beérkező regisztrációs kérelmeket (gondolom erről van szó) három csoportba sorolnám: Engedélyez, töröl, megtart (ha vizsgálni szeretnéd a delikvens jelentkezését). Ezeket rádió gombokkal valósítanám meg, mivel ezek közül csak egy lehet aktív. A form feldolgozása PHP oldalon megoldható (gondolom az lesz a szerver oldali megvalósítás).

  • zhagyma
    őstag

    most megy, de csak ha setAttribute()-tal állítom be az onClick-et:

    function addImage() {
    var old_span = document.getElementById("addImage");
    var pos_x = findPos(old_span)[0];
    var pos_y = findPos(old_span)[1];

    var new_input = document.createElement("input");
    new_input.type = "file";
    new_input.style.position = "absolute";
    pos_y = pos_y + 30;
    new_input.style.top = pos_y+"px";
    new_input.style.left = pos_x+"px";

    document.body.appendChild(new_input);
    document.body.removeChild(old_span);

    var new_span = document.createElement("span");
    new_span.id = "addImage";
    new_span.setAttribute("onClick", "addImage()");
    new_span.style.position = "absolute";
    pos_y = pos_y + 30;
    new_span.style.top = pos_y+"px";
    new_span.style.left = pos_x+"px";
    new_span.innerHTML = "Újabb kép hozzáadása";

    document.body.appendChild(new_span);


    }

    Így:

    new_span.onClick = function() { addImage(); };

    és így:

    new_span.onClick = "addImage()";

    nem megy...

    Ez azért érdekel, mert azt hallottam, hogy IE nem érti a setAttribute-t.. sajnos most nem tudom ellenőrizni, linuxom van csak

    (itt van élőben)

    szerk:
    tudom, hogy szebb lenne poziciólekérdezés nélkül, relatív pozicionálással, de nem értettem igazán, amit a DOM-ról mondtál, mármint hogy a gyakorlatban hogy kell a parent alá node-olást megvalósítani.

    new_span.onclick = function() {addImage()};

    Ez nem megy? Akkor előbb appendChild, utána az onclick. Ha nem megy akkor Firefox-ban dom inspector add-on letöltés és megnézni, hogy beállítja-e a kérdéses elem eseménykezelőjét.

  • zhagyma
    őstag

    most megy, de csak ha setAttribute()-tal állítom be az onClick-et:

    function addImage() {
    var old_span = document.getElementById("addImage");
    var pos_x = findPos(old_span)[0];
    var pos_y = findPos(old_span)[1];

    var new_input = document.createElement("input");
    new_input.type = "file";
    new_input.style.position = "absolute";
    pos_y = pos_y + 30;
    new_input.style.top = pos_y+"px";
    new_input.style.left = pos_x+"px";

    document.body.appendChild(new_input);
    document.body.removeChild(old_span);

    var new_span = document.createElement("span");
    new_span.id = "addImage";
    new_span.setAttribute("onClick", "addImage()");
    new_span.style.position = "absolute";
    pos_y = pos_y + 30;
    new_span.style.top = pos_y+"px";
    new_span.style.left = pos_x+"px";
    new_span.innerHTML = "Újabb kép hozzáadása";

    document.body.appendChild(new_span);


    }

    Így:

    new_span.onClick = function() { addImage(); };

    és így:

    new_span.onClick = "addImage()";

    nem megy...

    Ez azért érdekel, mert azt hallottam, hogy IE nem érti a setAttribute-t.. sajnos most nem tudom ellenőrizni, linuxom van csak

    (itt van élőben)

    szerk:
    tudom, hogy szebb lenne poziciólekérdezés nélkül, relatív pozicionálással, de nem értettem igazán, amit a DOM-ról mondtál, mármint hogy a gyakorlatban hogy kell a parent alá node-olást megvalósítani.

    Megy ez szépen. A setAttribute megy IE alatt csak a "class" attributum beállítását kell végezni element.className = "valami". Az esemény esetén valóban nem megy IE alatt, ahogy emlékszem. Erre vannak a DOM eseménykezelő függvényei.

    ID magyarázat:

    <p ID="kakukk">Na mi lesz?</p> // itt az ID a HTML-ben.

    // Emitt az id egy "pointer" a DOM (Document Object Model) fastruktúrában
    // és az alábbi függvényekkel tudod meg. Minden DOM függvény
    // ezen id-t várja paraméterként,ezért fontos.

    id = window.document.getElementById( "kakukk" ) // IE7,IE8
    id = window.document.nodeFromID ( "kakukk" ) // IE6

  • zhagyma
    őstag

    de működik span-nel is, mert az alert() "feldobja magát" :)
    Egyébként erre gondoltál, tehát a szintaktika jó, amit írtam?

    szerk: hmm, most kipróbáltam egy teljesen üres html oldalon, és ott működik.. ez érdekes. Az hogyan tudom megadni, hogy hova (melyik elem után) illessze be az új elemet?

    xxxx.appenChild( element ) DOM függvénnyel rendelheted hozzá az létrehozott elemet a html dokumentum megfelelő részéhez. Amelyik HTML tag alá "fűzöd", annak ismerni kell a DOM-on belüli azonosítóját (ID). Ez nem azonos a HTML tagben megadott ID attributummal meghatározott értékkel, de ezzel nyerheted ki: a parent elem attributumának ID="kakukk" nevet adsz. Azutan a parent=window.document..getElementById( ''kakukk" ) visszanyered a DOM azonosítót, amelyhez rendelheted parent.appendChild( element )-el a létrehozott elemet.

  • zhagyma
    őstag

    de működik span-nel is, mert az alert() "feldobja magát" :)
    Egyébként erre gondoltál, tehát a szintaktika jó, amit írtam?

    szerk: hmm, most kipróbáltam egy teljesen üres html oldalon, és ott működik.. ez érdekes. Az hogyan tudom megadni, hogy hova (melyik elem után) illessze be az új elemet?

    Na ezt kiprobáltam:

    function addImage() {
    element = window.document.createElement('input');

    element.setAttribute('type', 'button');
    element.setAttribute('value', 'click1');
    window.document.body.appendChild(element);
    element.onclick = function(){addImage()};
    window.alert("lefutott");
    };

    Rekurzívan hívod az addImage() függvényt az onclick eseményben.

  • zhagyma
    őstag

    megértettem, de még mindig nem jó. Ezt csinálom:

    <script type="text/javascript">

    function addImage() {
    var element = window.document.createElement('input');

    element.setAttribute('type', 'text');

    element.onClick = function(event) {
    addImage();
    };

    window.document.body.appendChild(element);

    alert("lefutott");
    }
    </script>

    majd

    <span onClick="addImage()">Újabb kép hozzáadása</span>

    lefut, de nem csinál semmit..

    Én úgy emlékszem a <span> tagnek nincs onclick eseménye, de lehet tévedek. Próbáld meg más taggel a kísérletezéshez. pl.:

    <input type="button" onclick="javascript:addImage()" value="click" />

  • zhagyma
    őstag

    Az egy példasor eseménykezelő definiálására. Az element.onclick = function( event ) egy HTML elem onClick eseményéhez rendel egy eseménykezelő függvényt. Az event HTML elemre klikkléskor keletkezett esemény átvételét biztosító paraméter. Ha ezt a form submittel játszod el:

    window.document.form[ 0 ].onsubmit = function() {
    ... mezők vizsgálata...
    jó - return true; // POST / GET üzenet elmegy a szerver felé a mezők tartalmával
    rossz - return false; // Nem küld semmit, újabb adatbekérés indítható.
    };

    return true / false eset lehet, hogy fordítva van, ilyent régen használtam.
    Igen a függvényedet meghívhatod például egy elem onclick eseményével és kapsz egy újabb input HTML tagot a képernyőn.

    Az addImage() függvényedben a return kimaradhat.

  • zhagyma
    őstag

    hmm, nem teljesen világos a kód működés (nem értek túlzottan js-hez)

    Ez a rész mit csinál? És mit kell ... helyére írni?

    element.onClick = function( event ) {
    ...
    };

    Az egész kódot beraktam egy fv-be, ezt hívom onClick esetén, ugye?

    function addImage() {
    var element = window.document.createElement('input');

    element.setAttribute('type', 'file');
    element.onClick = function(event) {
    window.document.body.appendChild(element);
    };

    window.document.body.appendChild(element); // a parent lehet pl.: window.document.body

    return;
    }

    Az egy példasor eseménykezelő definiálására. Az element.onclick = function( event ) egy HTML elem onClick eseményéhez rendel egy eseménykezelő függvényt. Az event HTML elemre klikkléskor keletkezett esemény átvételét biztosító paraméter. Ha ezt a form submittel játszod el:

    window.document.form[ 0 ].onsubmit = function() {
    ... mezők vizsgálata...
    jó - return true; // POST / GET üzenet elmegy a szerver felé a mezők tartalmával
    rossz - return false; // Nem küld semmit, újabb adatbekérés indítható.
    };

    return true / false eset lehet, hogy fordítva van, ilyent régen használtam.
    Igen a függvényedet meghívhatod például egy elem onclick eseményével és kapsz egy újabb input HTML tagot a képernyőn.

  • zhagyma
    őstag

    újabb kérdés: hogyan lehet js-sel újabb elemet hozzáadni egy már betöltött html-oldalhoz? Azt akarom, hogy képfeltöltésnél alapból egy input mező legyen, alatta meg egy "Újabb kép csatolás" link, amire nyomva egy újabb input mező jelenik meg.
    Ha document.write('<input>...')-tal csinálom, akkor új oldalon hozza be az inputot..

    A document.write() függvény használata esetén "felülírod" az eredeti HTML documentumot és egy új keletkezik. Ezért az eredeti HTML oldal megtartása mellett a web browser-be beépített DOM (Documentum Object Model) használata javascriptből egy lehetséges módja a probléma megoldásának:

    var element = window.document.createElement( ' input' );

    element.setAttribute( type, 'button' );
    element.onclick = function( event ) {
    ...
    };

    parent.appendChild(element); // a parent lehet pl.: window.document.body

    #1279 Submit gomb megnyomása után. Ha jó, akkor engedélyezed a formból az adatok webservernek küldést(POST HTTP message), ha nem újra bekéred a hibás adatokat.

  • zhagyma
    őstag

    van egy html kódokat is tartalmazó fájl, egyébként jsf oldal, abban van egy ojjektum, aminek van id-je. Az oldal elején egy külső fájlból van src-zve egy js fájl, amiben van egy eljárás. Ez meg is hívódik az oldalról onchange-nél, de document.getelementbyid-vel semmit nem talál meg. Minden undefined. Miért?

    Például ezért is lehet:

    window.document.getElementById(id) || window.document.nodeFromID(id)

    W3C standard: getElementById (IE7,IE8,FF,Safari,Opera,Chrome)
    IE6: nodeFromID

Új hozzászólás Aktív témák