Hirdetés

2024. június 9., vasárnap

Gyorskeresés

Téma összefoglaló

Téma összefoglaló

  • Utoljára frissítve: 2014-02-25 10:20:57

LOGOUT.hu

JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)

Összefoglaló kinyitása ▼

Hozzászólások

(#2351) Sk8erPeter válasza rt06 (#2348) üzenetére


Sk8erPeter
nagyúr

Nincs mit!
Ja, hát elsőre én is csodálkoztam rajta, én a Drupalból "loptam" az ötletet (itt a drupal.org-on láthatod a gyakorlatban, ha megkukkantod a forráskódját), ott alkalmazzák előszeretettel. Tulajdonképpen ez a dupla komment konkrétan nem tudom, melyik - régi - böngésző(k) miatt szükséges, de valószínű, hogy valami cross-browser hack-elés, ahogy Te is megsejtetted. :K

Sk8erPeter

(#2352) Sk8erPeter válasza Oly (#2349) üzenetére


Sk8erPeter
nagyúr

rt06 már előttem leírta, de a jsbin-en konkrét példán is láthatod: jsbin.com, itt bal oldalt szerepel a JS-kód, a "hello" azonosítójú paragrafusra (<p id="hello">Hello World</p>) hivatkozik, és ott megváltoztatja a bekezdés tartalmát:

if (document.getElementById('hello')) {
document.getElementById('hello').innerHTML = 'Hello World - this was inserted using JavaScript';
}

Sk8erPeter

(#2353) Lacces


Lacces
őstag

Sziasztok!

Van a neten tutorial leírás (nemtom angolul hogy kell beírni még új vagyok ajax / javascript területen)

Van egy Select lista, és ha belekattintok / kijelölök egy selectet, akkor azt akarom, hogy az a select rész, nagyobb legyen? Amivel automatikusan megtudnám növelni a méretet, vagy esetleg egy felugró ablakban jeleníti meg a selectet, és akkor ott kényelmesen ki lehet választani mindent.
Vagy bármilyen html tagnél.
Azt szereténm ha azt az objektumot megnövelné... Vagy felugró rakná.

Csak pár kedves angol szó is jó lenne, hogy a neten rá keresek.

(#2354) Speeedfire válasza Lacces (#2353) üzenetére


Speeedfire
nagyúr

Jquery css kell neked.
Amikor az id vagy osztály ki van jelölve, pl click funkcióval akkor beállítod neki ezt. Utána meg mondjuk kikattintásra vagy ha leveszed az egeret róla akkor vissza áll a css.

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#2355) Peter Kiss válasza Speeedfire (#2354) üzenetére


Peter Kiss
senior tag
LOGOUT blog

Attól, hogy a jQuery egy nagyon jól használható lib, még nem kellene folyamatosan erre irányítani senkit se. Főleg azt nem, akinek fogalma sincs a Javascript-ről. :W
Tudnám, mi a f...ért kell a jQuery-t egy új Javascript-nek tekinteni. :U

(#2356) Speeedfire válasza Peter Kiss (#2355) üzenetére


Speeedfire
nagyúr

folyamatosan erre irányítani senkit se
Most először ajánlottam ilyet....mellesleg egy jó framework miért rossz? Nem azért jó, mert gyorsabban meglehet sok dolgot valósítani benne? Nem ezért van a legtöbb nyelvre framework? Költői kérdések ezek...
A fenti mondatomban, hol van az hogy én új javascriptnek tekintem? :DDD
Most csak be akartál ug*tni nekem vagy rossz kedved van? ;)

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#2357) Sk8erPeter válasza Peter Kiss (#2355) üzenetére


Sk8erPeter
nagyúr

Nem világos a kissé túlzottan támadó stílusod oka - főleg úgy, hogy nem ajánlottál a kérdezőnek megoldást. Ezt azért ennél kicsit finomabban is lehetett volna közölni. :)

Gondolom a mondandód egyik lényege az volt, hogy kezdő ne nagyon foglalkozzon jQuery-vel nulla JavaScript-tudással, anélkül, hogy tudná, egyáltalán mit csinál. Ez rendben is van, egyetértek. A gond viszont az, hogy sokan csak egy gyors megoldást szeretnének, anélkül, hogy komolyabban belemennének a JavaScript tanulásába. Igényesebb munkához szerintem is elengedhetetlen, hogy belemenjen a részletekbe, de mondjuk jQuery-vel van mód arra is, hogy különösebb tudás nélkül össze lehessen gányolni valamit. :D
Tulajdonképpen az a probléma, amire rákérdezett, szintén jQuery-vel oldható meg gyorsan és könnyen, mert fasza kis pluginek vannak rá.
Egy példa, ami nem pontosan felel meg annak, amit kérdezett, de multiselectre például nagyon fasza: [link] (senki nem szeret ugye Ctrl nyomvatartásával többet kijelölni).
Tudom, most kész megoldást én sem javasoltam, csak mutattam egy példát. :D

Sk8erPeter

(#2358) Peter Kiss válasza Sk8erPeter (#2357) üzenetére


Peter Kiss
senior tag
LOGOUT blog

És innentől még az a nagy vicc, hogy a legtöbben a jQuery-t egy mágikus fekete doboznak tekintik, azt sem tudják, mi van benne, aztán meg csak megy az értetlenkedés, ha valami (akár egy plugin) nem megy, vagy lassú, vagy bármi más kínja van.

No sacrifice no victory.

(#2359) Sk8erPeter válasza Peter Kiss (#2358) üzenetére


Sk8erPeter
nagyúr

Ezzel tulajdonképpen mit akartál mondani?

Szerk.: egyébként az ilyen jellegű általánosításoknak sok értelme nincs, azok, akik nem értenek hozzá, kezdők, stb., nyilván mindent mágikus fekete doboznak tekintenek. Attól még nem biztos, hogy ostobák, és az sem biztos, hogy nem akarják később bepótolni a tudáshiányt.
Mellesleg gondolom Te is így vagy valamivel, amiről már sokat hallottál, de érdemben nem volt még időd foglalkozni vele, de majd szeretnél (sajnos ezt az igényességet nem mindenki mondhatja el, közvetlen közelből ismerek olyat, aki szeret úgy összeb@szni mindent a lehető leggyorsabban, anélkül, hogy értené, mit csinál, hogy még pénzt is keres vele) - addig viszont marad egy ismeretlen, egyelőre rejtélyes terület, vagyis egy mágikus fekete doboz. Nemde?

[ Szerkesztve ]

Sk8erPeter

(#2360) [pod]Diablo


[pod]Diablo
őstag

Udv!

Van egy menum amit kedves Sk8erPeter kollega tokeletesitett nekem,most viszont annyiba szeretnek valtozatni rajta hogy amikor active a menu a menu szovege alatt egy kep jelenjen meg.Odaig eljutok hogy berakom mindegyik ala a kepet,es elrejtem,csak azt nem tudom kivitelezni hogy az active menunel lathato legyen a kep.

Elore is koszonom a segitseget!

"Sült hal, Tom Jones, délutáni tea, rossz kaja, mégrosszabb idő, kibaszott Mary Poppins, LONDON!" // ...when i get sad.i stop being sad and be awesome instead...

(#2361) Sk8erPeter válasza [pod]Diablo (#2360) üzenetére


Sk8erPeter
nagyúr

Hali!
Remélem valami ilyesmire gondoltál: [link].

Persze gyorsmegoldás, lehetne másképp is, de a célnak megteszi.

Sk8erPeter

(#2362) [pod]Diablo válasza Sk8erPeter (#2361) üzenetére


[pod]Diablo
őstag

Igen,igen.Tokeletes,koszonom :R

"Sült hal, Tom Jones, délutáni tea, rossz kaja, mégrosszabb idő, kibaszott Mary Poppins, LONDON!" // ...when i get sad.i stop being sad and be awesome instead...

(#2363) Sk8erPeter válasza [pod]Diablo (#2362) üzenetére


Sk8erPeter
nagyúr

Szívesen. :R

Sk8erPeter

(#2364) mobal


mobal
MODERÁTOR

Sziasztok!

Annyi lenne a gondom, hogy Jquery -vel szeretnék egy url -t megnyitni a "háttérben". Gondoltam, hogy erre jó lesz az ajax, de nem csinál semmit. A lényeg, hogy admin felületen néhány funkciót így akarok végrehajtani, pl.: delet, block, activate. Az ajax -szal egy url -re szeretnék hivatkozni, amit a controller amúgy elvégezne pl.: http://www.gipszjakab.com/users/block/béla. (Remélem érthető :D ). Most a script lefut, de éppenséggel nem csinál semmit, szimplán a php -ra hivatkozok akkor pedig jó. :(.

[ Szerkesztve ]

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#2365) Sk8erPeter válasza mobal (#2364) üzenetére


Sk8erPeter
nagyúr

Akkor mutasd meg a kódodat, hogy mivel próbálkoztál eddig. Amúgy jó ilyenre az AJAX.
"szimplán a php -ra hivatkozok akkor pedig jó."
Mi az, hogy a PHP-ra "hivatkozol"? Magyarul futtatod pl. böngészőben adott fülön az adott címen elérhető PHP-fájlt?

[ Szerkesztve ]

Sk8erPeter

(#2366) mobal válasza Sk8erPeter (#2365) üzenetére


mobal
MODERÁTOR

Szia!

Közbe rájöttem mi volt a gond.

"szimplán a php -ra hivatkozok akkor pedig jó" például: http://valami.hu/felhsználó_törlése/béla

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#2367) Sk8erPeter válasza mobal (#2366) üzenetére


Sk8erPeter
nagyúr

Utsó mondatra: most semmivel nem magyaráztad el jobban, mint korábban. :D Legalábbis a "php-ra hivatkozok" ebben a formában nem igazán értelmes megfogalmazás. Na mindegy, lényeg, hogy megoldódott, úgyis tárgytalan. :)

[ Szerkesztve ]

Sk8erPeter

(#2368) mobal válasza Sk8erPeter (#2367) üzenetére


mobal
MODERÁTOR

Jó jó értelek, akkor kérlek utólag had korrigáljak:

- "a php függvényre hivatkozok konkrétan, mvc segítségével", remélem így jobb, ha nem akkor bocsi nem tudom rendesen megfogalmazni :D

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#2369) SektorFlop


SektorFlop
aktív tag

sziasztok!

text mező value értékét szeretném átadni egy PHP fájlnak GET metódussal, tudomásom szerint ehhez script szükséges. valaki tudna ebbe segíteni? akár egy egyszerű példa bemutatásával?

"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."

(#2370) Sk8erPeter válasza SektorFlop (#2369) üzenetére


Sk8erPeter
nagyúr

jQuery segítségével a legegyszerűbb: jQuery.get(), itt is van példa, itt bővebb magyarázat is (ld. 4. pont).

Kérdezz, ha elakadtál.

Sk8erPeter

(#2371) SektorFlop válasza Sk8erPeter (#2370) üzenetére


SektorFlop
aktív tag

köszi szépen! ez kell nekem.

"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."

(#2372) SektorFlop válasza Sk8erPeter (#2370) üzenetére


SektorFlop
aktív tag

úgy látom ezzel a módszerrel áttudom adni post-al is ami még jobb lenne... egy kis segítséget kérnék, 2 mezőt szeretnék átadni, és hol kell megadni hogy melyik oldalnak küldené az űrlap? tapasztalatom szerint nem elég action-ba beírni.

"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."

(#2373) Sk8erPeter válasza SektorFlop (#2372) üzenetére


Sk8erPeter
nagyúr

Igen, jól láttad, jQuery-vel nagyon egyszerű az AJAX-os kommunikáció.
Itt konkrét példát is mutatnak rá: jQuery.post().
Nézd meg alul azt a keresőt, ami bemutatja ennek a működését.

A lényeg kiszedve az oldalról, van egy ilyen form:

<form action="/" id="searchForm">
<input type="text" name="s" placeholder="Search..." />
<input type="submit" value="Search" />
</form>
<!-- the result of the search will be rendered inside this div -->
<div id="result"></div>

Tehát az "s" name-mel rendelkező input-elem tartalmát szeretnénk elküldeni POST-metódussal. Itt a jQuery-kód:

/* attach a submit handler to the form */
$("#searchForm").submit(function(event) {

/* stop form from submitting normally */
event.preventDefault();

/* get some values from elements on the page: */
var $form = $( this ),
term = $form.find( 'input[name="s"]' ).val(),
url = $form.attr( 'action' );

/* Send the data using post and put the results in a div */
$.post( url, { s: term },
function( data ) {
var content = $( data ).find( '#content' );
$( "#result" ).empty().append( content );
}
);
});

A lényeg ez, ami az elején lévő példakódban van, ez elég jól érthető:

$.post('ajax/test.html', function(data) {
$('.result').html(data);
});

Sk8erPeter

(#2374) wolandino


wolandino
tag

Sziasztok!

Egy táblázatmanipuláló JQuery, esetleg JavaScript plugint keresek.
Kipróbáltam a Datatables-t, de több bajom is van vele.

1. A php,excel, stb export gombjai nem megfelelően jelennek meg linuxos környezetben chrome böngészővel.Ez azt hiszem azért lehet, mert flash fájlt haszál ehhez a datatables, vagy nem jól van megírva az a függvény, ami a flasht használja, nem tudom :s

2. Ennél nagyobb baj, hogy az excel export sokkal "bénábbra" sikerült, mint amit korábban php-val produkáltam, ezen kívül headerben kell megadni, hogy mi legyen a fejléc, ami mindig a táblázat header részének utolsó sora, így a fölötte lévő sorok elvesznek exportkor. A legnagyobb baj viszont, hogy utána még elég komoly formázásra szorul az excel, ami számomra nem felel meg.

Valami olyan plugint keresek, ami hasonlóan bő szolgáltatással rendelkezik, mint a datatables, de jobb böngészőtámogatással és jobban testreszabhatók a funkciói...

Köszönettel,
W.

(#2375) Sk8erPeter válasza wolandino (#2374) üzenetére


Sk8erPeter
nagyúr

Itt még nagyon sok alternatívát kínálnak a DataTables-ön kívül: [link].

Sk8erPeter

(#2376) wolandino válasza Sk8erPeter (#2375) üzenetére


wolandino
tag

Igen, én is ismerek egy csomó ilyen oldalt, de az ördög a részletekben bújik meg, ezért kellene, hogy olyan írjon, aki használt már valamit és tud annak a szolgáltatásairól képet festeni :)
Ezekből a leírásokból nem derül ki, hogy az egyes szolgáltatások kombináltan mennyire testreszabhatók, illetve pl. konkrétan hogy néz ki egy excel export, csak annyi, hogy van-e benne valamilyen, vagy nincs...elsőre nekem a datatables is tökéletes megoldásnak tűnt.
Autós hasonlattal a fedélzeti computer sem biztos, hogy ugyanazt jelenti a Bentley és a Suzuki esetén :)

(#2377) BullZeye


BullZeye
veterán

Sziasztok

Találtam egy elég hasznos scriptet Scriptish-hez, amit szerettem volna picit átalakítani, már félig össze is jött ami kell, viszont egy ponton megakadtam.

Ncore jellemzője, hogy minden sor más színű, ezért ugyanaz a háttérszín minden sornál hülyén néz ki, úgyhogy jött az ötlet, hogy 2 színű legyen, viszont várakozásokkal ellentétben csak a páratlan sorok színeződnek be (azaz pont az első része a scriptnek, és nem a második)

Sose javascripteltem, úgyhogy előfordulhat, hogy valami orbitális hülyeséget követtem el, és ott van a hiba. Script itt található:

http://pastebin.com/UJEmEkkn

//box_nagy2 - páratlan sorok
ez a rész lefut, színez

//box_nagy - páros sorok
ezt a részt viszont ignorálja teljesen, de hibát nem ír ki, csak nem színez

//Sok letöltés
ez ismét tökéletesen lefut hiba nélkül

Most próbáltam elérni, hogy kapásból vizsgálat után mindkét sort színezze, és ne kelljen a title.matchnek 2x jelentkeznie.

document.getElementsByClassName("box_torrent")[i].getElementsByTagName("a")[1].title.match
(/family.guy/i)
&&
document.getElementsByClassName("box_torrent")[i].getElementsByTagName("a")[1].title.match
(/720p/i)
?
document.getElementsByClassName("box_nagy2")[parseInt(i/2)].style.backgroundColor = "#329832";
document.getElementsByClassName("box_nagy")[parseInt(i/2)].style.backgroundColor = "#3aa03a":

De mondanom sem kell, hogy ez nem működik. Mit rontottam el, illetve mivel tudom működésre bírni ezt a részt?

[ Szerkesztve ]

(#2378) BullZeye válasza BullZeye (#2377) üzenetére


BullZeye
veterán

Áh, túl egyszerű volt a megoldás, hogy lássam:

document.getElementsByClassName("box_nagy" + (i%2?"":"2"))[parseInt(i/2)].style.backgroundColor = (i%2?"#3aa03a":"#329832"):

(#2379) SektorFlop válasza Sk8erPeter (#2373) üzenetére


SektorFlop
aktív tag

nem sikerül összehoznom...
mobil.php fájlom ahol a form található...

<div data-role="page" id="mailcsere">
<div data-role="header">
<h1>E-mail módosítás</h1>
</div>
<div data-role="content">
<form action='/' method='post' id="mailcsere">
<input type='text' name='email' />
<input type='submit' value='Módosítás' />
</form>
<script>
/* attach a submit handler to the form */
$("#mailcsere").submit(function(event) {

/* stop form from submitting normally */
event.preventDefault();

/* get some values from elements on the page: */
var $form = $( this ),
term = $form.find( 'input[name="email"]' ).val(),
url = $form.attr( 'action' );

/* Send the data using post and put the results in a div */
$.post( 'login/mailcsere.php', { email: term },
function( data ) {
var content = $( data ).find( '#content' );
$( "#result" ).empty().append( content );
}
);
});
</script>
</div>
<div data-role="footer">
<h4>Page Footer</h4>
</div>
</div>

mailcsere.php

<?
session_start();
$felhasznalo=$_SESSION['felhasznalo'];
require_once ('connect.php');
$email=$_POST['email'];
$sql = "UPDATE `felhasznalok` SET email='$email' WHERE user='$felhasznalo';";
if (mysql_query($sql)) {
echo "<script type='text/javascript'>window.location='mobil.php?szerkezt=sikeres'</script>";
exit;
}
else {
echo "<script type='text/javascript'>window.location='mobil.php?szerkezt=sikertelen'</script>";
}
?>

a mobil.php fájlom azért néz ki így mert phonegap-el dolgozom, ezért is bajlódom a formokkal :W

"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."

(#2380) Sk8erPeter válasza BullZeye (#2377) üzenetére


Sk8erPeter
nagyúr

Uhh, ezt elég brutálisan túlbonyolítod.
Ha jól értem, az a célod, hogy a páratlan, illetve páros soroknak különböző háttérszíneket adj.

Ebben az esetben ennyivel megoldható:

var
// páratlan táblázatsorok
oddElements = document.getElementsByClassName("box_nagy"),
// páros táblázatsorok
evenElements = document.getElementsByClassName("box_nagy2"),
// páratlan táblázatsorok háttérszíne
oddBackgroundColor = "#3AA03A",
// páros táblázatsorok háttérszíne
evenBackgroundColor = "#A31E39"
;

// végigmegyünk a páratlan táblázatsorokon
for(var i = 0; i<oddElements.length; i++){
oddElements[i].style.backgroundColor = oddBackgroundColor;
}

// végigmegyünk a páros táblázatsorokon
for(var i = 0; i<evenElements.length; i++){
evenElements[i].style.backgroundColor = evenBackgroundColor;
}

=================

(#2376) wolandino : a puding próbája az evés. :P

Sk8erPeter

(#2381) BullZeye válasza Sk8erPeter (#2380) üzenetére


BullZeye
veterán

Ááá, ha csak ennyi kellene, akkor CSS-t hasznék rá, nem Javascriptet!

Az a lényeg, hogy az oldalon végig nézi a megjelölt diveket, és ha benne van egy szöveg, és az 720p, akkor kijelöli színesen. De már rájöttem a hiba kiküszöbölésére, szóval lassan kész is.

Azért problémák még akadnak sajnos, pl hogy egyszerre nézzen 2 divet, és ha egyik is true, akkor jó legyen, de majd kitalálom egyszer. :)

(#2382) Sk8erPeter válasza BullZeye (#2381) üzenetére


Sk8erPeter
nagyúr

Jah, jogos, igazából most nézem csak, hogy benne van a reguláris kifejezéssel való ellenőrzés is.

De akkor is nehezen átlátható így. :P

Én valahogy így oldanám meg, kipróbáltam, működik (direkt két jól eltérő háttérszínt választottam):

var
torrentElements = document.getElementsByClassName("box_torrent"),
oddRowClassName = "box_nagy",
evenRowClassName = "box_nagy2",
oddRowBackgroundColor = "#3AA03A",
evenRowBackgroundColor = "#FF1111";

for(var i=0; i<torrentElements.length; i++){
var torrentLink = torrentElements[i].getElementsByTagName("a")[1],
isTorrentFamilyGuy = torrentLink.title.match(/family.guy/i),
isTorrent720p = torrentLink.title.match(/720p/i),
isOddRow = (torrentElements[i].getElementsByClassName(oddRowClassName).length > 0);
isEvenRow = (torrentElements[i].getElementsByClassName(evenRowClassName).length > 0);

if(isTorrentFamilyGuy && isTorrent720p){
if(isOddRow){
torrentElements[i].getElementsByClassName(oddRowClassName)[0].style.backgroundColor = oddRowBackgroundColor;
}
else{
torrentElements[i].getElementsByClassName(evenRowClassName)[0].style.backgroundColor = evenRowBackgroundColor;
}
}
}

Szerk.: a működését úgy is le tudod ellenőrizni, hogy pl. Chrome-ban nyomsz egy F12-t, a Console fület kiválasztod, és oda egy az egyben bemásolod a kódot, majd nyomsz egy Entert (persze úgy, hogy a megfelelő ncore-oldal meg van nyitva, és rákerestél a Family Guy-találatokra).

[ Szerkesztve ]

Sk8erPeter

(#2383) Sk8erPeter válasza SektorFlop (#2379) üzenetére


Sk8erPeter
nagyúr

Ez a kód már csak azért is fájó, mert olyan könnyen támadható az oldalad SQL Injectionnel, mint az állat. Nem ártana escape-elni a felhasználótól érkező tartalmat - soha ne bízz meg abban az adatban, ami a felhasználótól közvetlenül érkezik...

Másrészt ha kódot illesztesz be, akkor jelöld ki a kódodat itt a szövegmezőben, majd kattints a "Programkód" gombra, pont arra való, hogy valami normálisan átlátható formában legyenek a kódok.

Harmadrészt: a mailcsere.php fájlban abszolúte semmi értelme JavaScripttel átirányítani a felhasználót, arra ott a PHP header() függvénye is - felesleges tehát kiíratni bármit is.
Ahogy a példában van:
header('Location: http://www.example.com/');
de ezelőtt ne legyen SEMMILYEN kiíratás.
DE (!!!) ezt NE TEDD BELE!! Egyáltalán ne rakj bele semmilyen átirányítást, mert most AJAX-os kommunikáció zajlik, lásd később a magyarázatot.

Aztán menjünk tovább.
Ez van most a kódodban:
/* Send the data using post and put the results in a div */
$.post( 'login/mailcsere.php', { email: term },
function( data ) {
var content = $( data ).find( '#content' );
$( "#result" ).empty().append( content );
}
);

Ez most azt csinálja, hogy a login/mailcsere.php fájlnak elküldi a term-ben található adatot, az emailbe objektumba begyűjtve, ez majd PHP-oldalon is megjelenik.
A sikeres (!) adatküldés esetén (pl. létezik a fájl, elérhető, nem dobott vissza hibát, stb.) a content változóba úgy pakolja be az adatot, hogy a visszakapott adatokból kikeresi a "content" id-val rendelkező DOM-elemet (!), aztán a content változó tartalmát bepakolja a "result" id-val rendelkező HTML-elembe.

Egyrészt: amit Te visszaadsz a PHP-fájllal, abba nem raksz bele semmi olyat, amiben "content" id-val rendelkező elem van, másrészt egyáltalán nincs "result" id-vel rendelkező elemed az oldalon.
Sőt, a PHP-fájlban csak azt a JavaScriptes visszairányítós részt íratod ki, ami AJAX-os kommunikáció esetén eleve felesleges.

Először próbáld csak úgy, hogy kiíratod echo-val, hogy "siker" vagy "hiba", aztán a $.post részt egyelőre (!) így módosítod:
var content = $( data ).find( '#content' );
$( "#result" ).empty().append( content );

HELYETT
var content = $( data );
$( "#result" ).empty().append( content );

Ezenkívül még tegyél be a mobil.php fájlba egy ilyet valahova a végére mondjuk:
<div id="result"></div>

Ide fogja pakolni az AJAX-kommunikáció eredményét.

Sk8erPeter

(#2384) SektorFlop válasza Sk8erPeter (#2383) üzenetére


SektorFlop
aktív tag

éreztem hogy az egész rossz... nem értek se az ajaxhoz és a javascripthez is csak kicsit :( a header helyet azért használtam scriptet mert atw-vén futna a dolog és ott mindig hibát írt a header-re. próbáltam más irányba menni ezzel a dologgal, ahogy írtam nem értek hozzá, így erőltetem inkább ezeket a scripteket, de sajnos nem járok sehogy se sikerrel :( mindenesetre köszönöm a segítséget.

"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."

(#2385) Sk8erPeter válasza SektorFlop (#2384) üzenetére


Sk8erPeter
nagyúr

Ne add fel, hidd el, az elején én is csak kapkodtam a fejem, hogy "most mi va'? Semmit nem értek." :D
Aztán szép lassan összeáll a kép, de azt az ember nem ússza meg, hogy sokat olvasgasson utána.
A header() akkor szokott hibát okozni, ha van bármiféle kiírás még a fejlécek kiküldése előtt. Elég akár egyetlen szóköz is ahhoz, hogy probléma legyen. Vagy pl. a karakterkódolási probléma: UTF-8 BOM-mal - na az nem jó, mert kiokád a doksi elejére egy felesleges karaktersorozatot, mindig BOM nélküli UTF-8-kódolást használj (ezt Notepad++-ban nagyon jól lehet csekkolni).
Azért majd még egyszer olvasd át, amiket írtam, remélem abból nagyjából vágni fogod, mihez is kéne nyúlni. De kérdezz vissza, ha valami nem egyértelmű.

[ Szerkesztve ]

Sk8erPeter

(#2386) SektorFlop válasza Sk8erPeter (#2385) üzenetére


SektorFlop
aktív tag

Kicsit utána olvastam és nehezen sikerült összehozni. Köszönöm a segítséget! :R Van még mit tanulnom :)

[ Szerkesztve ]

"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."

(#2387) Sk8erPeter válasza SektorFlop (#2386) üzenetére


Sk8erPeter
nagyúr

Szívesen! Sok sikert. :R

Sk8erPeter

(#2388) BullZeye


BullZeye
veterán

Mivel az előző script jól működik, veszem a bátorságot, és megpróbálok egy más szerkezetű oldalhoz is csinálni hasonlót. Viszont mivel azóta se tudok programozni, lenne 1-2 kérdésem, mert itt próbálgatással nem megyek semmire, mert 1 apró hiba, és nem működik, és google-be hiába kerestem számomra fogyasztható írást erről, nem igazán találtam (nem is igazán tudom mire keressek).

Szóval, az oldal első eleme amit vizsgálni szeretnék, teljes fával:

És ha jól sejtem, nekem elég innentől dolgozni:

Azaz ennek a vizsgálata, és hosszának megállapítása így fog kinézni?

for (
i=1 ;
i < document.getElementsById("torrenttable").getElementsByTag("TBODY").length ;
i++
)

I azért 1, mert az első TR a fejléc, ami nekem nem kell, így kapásból a 2. elemmel kell kezdenie.

Valamint a szöveg vizsgálata:

document.getElementsById("torrenttable")[0].getElementsByTagName("TBODY")[i].getElementsByTagName("TR")[1].getElementsByTagName("a")[0].title.match(/720p|Dimension|Immerse/i)

itt a [1] az első vagy a második elemet jelenti, itt is a 2.at ugye?

[ Szerkesztve ]

(#2389) Sk8erPeter válasza BullZeye (#2388) üzenetére


Sk8erPeter
nagyúr

Láttad a korábbi hsz.-t, amit még szintén neked címeztem?

Újabb kérdésre:

ott van a "cati" classname-mel rendelkező <td> elem még azelőtt. Ezért én abból indulnék ki, hogy ennek a <td> testvérelemén belül keresed az <a> taget.

Innen szedtem egy next() függvényt.

Ezek alapján a kód:

function next(elem) {
do {
elem = elem.nextSibling;
} while (elem && elem.nodeType != 1);
return elem;
}

var elementsWithCatiClass = document.getElementsByClassName('cati'),
nextElement = null,
elementsNeeded = [];

for( var i = 0; i < elementsWithCatiClass.length; i++ ){
nextElement = next( elementsWithCatiClass[i] );
elementsNeeded[i] = nextElement.getElementsByTagName('a');
}

Itt az elementsNeeded tömbbe gyűjtjük az említett elemeket.
A for cikluson belül persze csináld ezekkel az elemekkel azt, amit szeretnél.
Kipróbáltam, működik.

Sk8erPeter

(#2390) BullZeye válasza Sk8erPeter (#2389) üzenetére


BullZeye
veterán

Persze hogy olvastam, ki is próbáltam, de nem azt csinálta amit én szeretnék az a kód. Kijelöli ugyan a 720p torrenteket, de párat pirossal, párat zölddel, és semmi összefüggés nincs köztük, vagyis én nem vettem észre, hisz amit sokan letöltöttek azt ki se jelöli, meg ilyenek.

És a kódot amit használok értek, és átlátom, a tiédet meg nem, ezért használtam azt inkább.

Az a Cati meg testvér elem, szóval nem egymás alatti dolog, hisz a 2 TD teljesen egyenrangú, abból ki lehet indulni?
Így néz ki a szülőkönyvtár:
Table(torrentable) > Tbody > TR > TD > A

Most a kód btw így néz ki:

http://pastebin.com/UJEmEkkn

(#2391) Sk8erPeter válasza BullZeye (#2390) üzenetére


Sk8erPeter
nagyúr

Nem tudom, nálad miért nem működik a korábbi kód, pedig pontosan megfelelt annak a specifikációnak, amiről írtál, ki is próbáltam a gyakorlatban, nálam azt csinálta, amit szerettél volna.
Egyébként nem tudom, mi a nehezen átlátható benne, szerintem a kód magáért beszél, beszédes változóneveket is használtam direkt.

"Kijelöli ugyan a 720p torrenteket, de párat pirossal, párat zölddel, és semmi összefüggés nincs köztük, vagyis én nem vettem észre"
Most direkt rákerestem a "Family Guy" szavakra a megfelelő helyen, és pontosan azt csinálja, amit leírtál, hogy szerettél volna... :U A táblázatban páratlannak megfelelő sorokat pirosas színnel jelöli ki, a párosakat zölddel. De most lehet, hogy te azt akartad volna, hogy a találatok közül válassza szét a páros-páratlanokat, és annak megfelelően színezzen? Mert rohadtul nem azt mondtad....

"hisz amit sokan letöltöttek azt ki se jelöli, meg ilyenek."
Itt miről beszélsz, beszélj már világosan, mert én nem értem. Mikor volt szó arról, hogy a sokat letöltött torrenteket jelölje már ki? Ugyan milyen szűrőt akarnál erre tenni? Ezt korábban még csak nem is említetted, hogy erre rá lehessen keresni.

Elmondom, mit kértél zanzásítva: a táblázatban lévő páratlan sorokat jelölje ki az egyik színnel, a párosakat másikkal, de ezeken belül csak azokat színezze be, amely találatok nevében benne van a "family guy" és a "720p".
Pont ezt csinálja, attól még, mert nem tudtad normálisan megfogalmazni, mit szeretnél, nem az én kódom a hibás.

A második kérdésre:
"Az a Cati meg testvér elem, szóval nem egymás alatti dolog, hisz a 2 TD teljesen egyenrangú, abból ki lehet indulni?"
Igen, épp ezt magyaráztam, hogy a cati osztályú td elem testvéreleme az, amin belüli <a> taggel rendelkező elemet keresed, és mint a kódból látható, ki lehet belőle indulni. :U Ezt is kipróbáltam, létrehoztam egy ilyennek megfelelő táblázatot, ha nálad nem működik, akkor annak már tényleg nem tudom, mi az oka...

[ Szerkesztve ]

Sk8erPeter

(#2392) wolandino


wolandino
tag

sziasztok,

kicsit összetett problémám van JQueryvel, de megpróbálom összeszedetten megfogalmazni.
Van egy oldalam, amibe az oldalbetöltésnél bedobálok checkboxokat, majd meghívok pár javascript függvényt, amelyek újabb checkboxokat dobálnak az oldalra. Azt vettem észre, hogy az így behúzott checkboxokra már nem tudok hivítkozni jqueryvel pl $("#id") nem műxik.
Van valakinek valami ötlete, hogyan tudnám áthidalni a problémát, sajnos az nem megoldható, hogy már az elején betegyem az összes checkboxot, mert ezek változnak sajnos.

Köszönettel,
W.

(#2393) Sk8erPeter válasza wolandino (#2392) üzenetére


Sk8erPeter
nagyúr

Akkor fordulhat elő ilyen, ha
1.) több HTML-elemnek ugyanaz az id-je (kerülendő)
2.) dinamikusan hozzáadott elemek id-jára hivatkozva kötsz az adott elemre eseménykezelőket, ilyenre való az .on() függvény (korábban .delegate(), .live(); ennek lényege, hogy jövőben várhatóan létrejövő elemekre is tudsz eseménykezelőket kötni).
3.) szintaktikai hiba
4.) ..... stb.

Ha konkretizálod a példát úgy, hogy egy leegyszerűsített változatot felraksz jsfiddle-re, konkrétabban is fogunk tudni segíteni.

Sk8erPeter

(#2394) wolandino válasza Sk8erPeter (#2393) üzenetére


wolandino
tag

azt hiszem nekem tanán a 2.) irányában kellene mennem.
egyébként az összes checkboxot jqueryvel teszem fel, és vannak ugyanolyan id-jűek(css miatt), de nem aszerint nem tudok hivatkozni rá. ugyanis valójában nem id alapján hivatkozom, hanem
$(":input").click(function () {...
na ez a közben bedobott checkboxokat nem veszi figyelembe...

szívesen feltenném, de túl nagy a kód, még egyszerűsítve is...

(#2395) Sk8erPeter válasza wolandino (#2394) üzenetére


Sk8erPeter
nagyúr

Akkor próbáld meg azt, hogy így átírod:

$(":input").click(function () {
// ...
}

HELYETT

$(":input").on("click", function () {
// ...
});

Fontos: az .on() függvény a jQuery 1.7-es verziójától él.
Ez jól összefoglalja a változásokat:
$(selector).live(events, data, handler); // jQuery 1.3+
$(document).delegate(selector, events, data, handler); // jQuery 1.4.3+
$(document).on(events, selector, data, handler); // jQuery 1.7+

Sk8erPeter

(#2396) wolandino válasza Sk8erPeter (#2395) üzenetére


wolandino
tag

bár nekem 1.6.2-van, megpróbáltam 1.7-el, a függvénnyel, amit írtál, de nem javult meg a dolog sajna:S

(#2397) wolandino válasza Sk8erPeter (#2395) üzenetére


wolandino
tag

Live-al úgy néz ki, hogy működik!
a többivel nem.

Köszönöm :R

(#2398) Sk8erPeter válasza wolandino (#2397) üzenetére


Sk8erPeter
nagyúr

Szívesen!

.on()-nal akkor nyilván azért nem működött, mert az csak újabb jQuery-ben van; .delegate()-tel meg gondolom azért nem, mert nem nézted meg rendesen a meghívásának módját. :P Elég hülye módon fel van cserélve a .live()-hoz képest:

tehát ez:
jQuery("body").on("click", ":input", function () {
// ...
});

megfelel ennek:
jQuery("body").delegate(":input", "click", function () {
// ...
});

.live()-val:
jQuery("body").live( "click", ":input", function () {
// ...
});

[ Szerkesztve ]

Sk8erPeter

(#2399) wolandino válasza Sk8erPeter (#2398) üzenetére


wolandino
tag

a delegate tényleg műxik így !:D
az on nem tudom miért nem működött, pedig amíg kipróbáltam kicseréltem a jquery-t és nem is nyavalygott, hogy nem ismeri a függvényt, hanem csak nem jól működött.

(#2400) Sk8erPeter válasza wolandino (#2399) üzenetére


Sk8erPeter
nagyúr

Hmm, mondjuk sztem azért, mert előbb így írtam:
$(":input").on("click", function () {
// ...
});

viszont ide nem írtam selectort, az utóbbiba már igen:
jQuery("body").on("click", ":input", function () {
// ...
});

Ja, amúgy jótanács, amivel időt spórolhatsz: ha van egy új kód, amit előbb tesztelni akarsz, úgy, hogy egyből lásd a hatását (egyáltalán jó-e, amit csináltál), anélkül, hogy fájlba kéne mentegetni, majd frissítgetni (olykor Ctrl+F5 nyomogatásával, hogy ne cache-ből kotorja elő), akkor pl. Chrome-ban nyomj egy F12-t vagy Ctrl+Shift+I-t, aztán kattints a konzol fülre, és ide egyből másold be az új kódodat, majd nyomj egy Entert, és itt általában egyből látható, működik-e a kód, vagy van valami szintaktikai vagy egyéb hiba. Ha itt írod meg a többsoros kódot (én is szoktam), akkor Shift+Enterrel tudsz sortörést belerakni, a normál Enter egyből elküldi.

[ Szerkesztve ]

Sk8erPeter

Copyright © 2000-2024 PROHARDVER Informatikai Kft.