Autor | Zpráva | ||
---|---|---|---|
tester Profil * |
#1 · Zasláno: 29. 8. 2016, 15:12:49
Tento kód by měl prohodit dva sloupce na stránce:
Jak psát web (Kód injectuju na stránku pomocí addonu pro prohlížeč Firefox) var selectors = "div#navigace;div#text" selectors.split(";"); var searches = []; var targets = []; for ( var k in selectors ) { if ( (k % 2) != 0 ) searches.push(selectors[k]); else targets.push(selectors[k]); } for ( var k in searches ) { var cloned = $(searches[k]).clone(true); $(searches[k]).replaceWith($(targets[k])); $(targets[k]).replaceWith(cloned); } No nepovedlo se. Levý sloupec zmizel a pravý je na místě. Co je špatně? |
||
Joker Profil |
#2 · Zasláno: 29. 8. 2016, 18:11:20
tester:
Jednak se na druhém řádku volá selectors.split, ale výsledek se nikam neukládá a nadále se pracuje s původním selectors. Ten výsledek je pak způsobený použitím for-in. V proměnné selectors je řetězec "div#navigace;div#text", takže výsledkem toho for-in by mělo být: searches = ["i", "#", "a", "i", "a", "e", "d", "v", "t", "x"] targets = ["d", "v", "n", "v", "g", "c", ";", "i", "#", "e", "t"] Podle mě z toho reálně něco udělá (když vynechám položky s "#" a ";", které by měly generovat chyby) jen třetí iterace, která má prohodit všechny výskyty selektoru "a" a všechny výskyty selektoru "n". To nejspíš ve výsledku odstraní všechny odkazy ze stránky (vzhledem k tomu, že tam žádný prvek <n> není), což je možná příčinou dojmu, že zmizela ta navigace. |
||
tester Profil * |
#3 · Zasláno: 29. 8. 2016, 18:36:15
Tak oprava a posílám živou ukázku
|
||
tester Profil * |
Nefunguje. Ještě jsem to zkusil pomocí CSS, ale to vypadá dost blbě:
var searches = []; var targets = []; for ( var k in selectors ) { if ( (k % 2) == 0 ) searches.push(selectors[k]); else targets.push(selectors[k]); } for ( var k in searches ) { var search = $(searches[k]); var target = $(targets[k]); var offset_search = search.offset(); var offset_target = search.offset(); search.css({ 'position' : 'absolute', 'left' : offset_search.left + 'px', 'top' : offset_search.top + 'px' }); target.css({ 'position' : 'absolute', 'left' : offset_target.left + 'px', 'top' : offset_target.top + 'px' }); } Je tam obrovská mezera zleva Podle všeho ta navigace má špatně nastavenou pozici. Při normálním zobrazení pro div#text mi debugger ukazuje offset_target.left = 638 až 1200 podle toho jak velký dám zoom. To teda nechápu. Hodnotu bych očekával blízko 0. |
||
Joker Profil |
#5 · Zasláno: 30. 8. 2016, 13:31:49
tester:
A co je vlastně cílem? Prohodit prvky vizuálně na stránce jejich prohozením v HTML půjde jen ve specifických případech, protože s tím musí počítat i stylování těch prvků, jinak se rozhodí stránka. |
||
Časová prodleva: 8 let
|
0