| 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: 9 let
|
|||
0


