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
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 + "");
}
, ale to nefungovalo podle představ.

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
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.
3. Nahradit 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>
Unikátní ID bys potřeboval, pokud bys chtěl ten input spojit s labelem. To ale v kódu nemáš, takže idčka budou s největší pravděpodobností zbytečná. Mnohem důležitější pro formuláře bývá pojmenovat inputy.
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
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. :)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0