| Autor | Zpráva | ||
|---|---|---|---|
| Milan1236000 Profil |
Čau,
mám následující situaci: V jQuery si v cyklu přidám na stránku nějaké stejné prvky, u kterých se jen jejich "id" zvyšuje o 1 (např. pole1, pole2...pole30) a protože pak s hodnotami v polích ještě dál pracuju, tak si po vypsání těchto prvků nadeklaruju proměnné: var pole1 = $("#pole1");
var pole2 = $("#pole2");
...
var pole30 = $("#pole30");Jde nějak tato otrocká deklarace taky hodit rovnou do toho cyklu, aby se to nadeklarovalo samo? Případně jak? Díky. |
||
| Keeehi Profil |
#2 · Zasláno: 21. 7. 2019, 01:13:48
Milan1236000:
Řešením je použít opravdové pole. |
||
| Milan1236000 Profil |
Keeehi:
Tím mým polem mám na mysli input. Před položením dotazu jsem právě zkoušel deklaraci v cyklu způsobem
for (var i = 1; i === 30; i++) {
let selector = "pole" + i;
$("#table").append("...<input id='" + selector + "'...>...");
var selector = $("#" + selector + "");
}Jakým způsobem tedy deklaraci nebo tu práci s těmi poli provést přes array? Zatím mě nic nenapadá.
Díky. |
||
| mckay Profil |
#4 · Zasláno: 21. 7. 2019, 10:42:59
Milan1236000:
Když budu vycházet z kódu, který máš uvedený, tak by Ti možná mohlo fungovat: 1. Hodit před cyklus var selectors = []; - To bude sloužit jako "uložiště" odkazů na jednotlivé input
2. Opravit podmínku cyklu: for (let i = 1; i < pocet_policek+1; i++) { // pocet_policek musí být definované dříve a odpovídat počtu políček ve stránce, plus jedna, protože čísluješ od 1.var selector ... za selectors.push( $("#" + selector + "") );
Celkově by to tedy mohlo vypadat nějak takto: let pocet_poli = 30;
let selectors = [];
for (var i = 1; i < pocet_poli + 1; i++) {
let selector = "pole" + i;
$("#table").append("...<input id='" + selector + "'...>...");
selectors.push($("#" + selector + ""));
}
// V selectors nyní bude odkaz na všechny z inputů. |
||
| Keeehi Profil |
Nejbližším fungujícím přepisem toho tvého kódu je
var inputs = [];
for (var i = 0; i < 30; i++) {
$("#table").append("<input id='pole" + i + "'>");
inputs.push($("#pole" + i));
}
console.log(inputs)Pokud inputy opravdu reprezentují hodnoty nějakého pole, pak by HTML kód měl vypadat takto: <form name="table"> <input name="pole[]"> <input name="pole[]"> ... </form> Javascript by pak samozřejmě vypadal jinak. Nicméně ono taky záleží, co chceš pak s těmi inputy dělat. Ukládat si reference na ně, jen tak, pro nic za nic je zbytečné. |
||
| Milan1236000 Profil |
#6 · Zasláno: 21. 7. 2019, 16:26:00
Můj uvedený příklad je velmi zjednodušený. Takže místo deklarace rovnou procházet pole se selektory, už chápu. Díky moc. :)
|
||
|
Časová prodleva: 7 let
|
|||
0