DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   (X)HTML, JavaScript, DHTML, XML, CSS (http://www.devprotalk.com/forumdisplay.php?f=8)
-   -   JS add/remove html element + dropdown (http://www.devprotalk.com/showthread.php?t=2575)

twix 11. 03. 2007. 16:16

JS add/remove html element + dropdown
 
Pozdrav,

Imam jedan mali problem. Vec par sati pokusavam da sredim neku formu za narucivanje, medjutim vise ne znam gde gresim.

Demo moje forme se nalazi na: http://local.twix.name/form.html

Za dodavanje elemenata koristio sam:
http://www.dustindiaz.com/add-and-re...th-javascript/
(http://www.dustindiaz.com/basement/addRemoveChild.html)

U cemu je zapravo problem, naime izborom proizvoda dobijaju se raspolozive boje za dati proizvod,... medjutim kada dodam novi element (artikal) uz pomoc gore navedene JS, jednostavno novi element ne cita vrednosti kako bi trebalo.

Za ucitani element... koristi se:

window.onload = function() {
set_produkte();
}

Medjutim,.. kada dodam novi artikal, predpostavljam da set_produkte() treba da dodam i u addEvent() medjutim ne znam na koji nacin, ni kako tacno.

Onaj ko poznaje dobro JS ovo mu je verovatno smesno, ali ja stvarno nemam ideju sta da radim.

Svaka ideja je dobrodosla :1043:

jablan 11. 03. 2007. 19:14

Ja ne razumem pitanje, a link ti ne radi. Ajde postavi negde deo koda koji te muči.

twix 11. 03. 2007. 19:47

Link: http://www.twix.name/form.html

Pa bilo bi dobro kad bi ja znao u cemu je problem :(
Znaci imam cascade dropdown, na osnovu koga kada se izabere proizvod prikaze raspolozivu boju za dati proizvod i imam deo za dodavanje novog artikla. Sve radi super dok ne dodam novi proizvod (artikal), jer unutar tog, da nazovem, niza, treba da se popuni drugi niz. Ne znam kako najlakse da objasnim,...

Kôd:

function set_farbe() {
  var select_artikel = document.senden_form.artikel;
  var select_farbe = document.senden_form.farbe;
  var selected_farbe = select_artikel.value;
  if(!selected_farbe) {
    select_farbe.options.length=0;
    select_farbe.options[select_farbe.options.length] = new Option('-------');
    return;
  }
  select_farbe.options.length=0;
  ext_modell_produkte = modell_produkte[selected_farbe];
  for(key in ext_modell_produkte) {
    select_farbe.options[select_farbe.options.length] = new Option(ext_modell_produkte[key], key);
  }
}

function set_produkte() {
  var select_artikel = document.senden_form.artikel;
  for(key in produkte) {
    select_artikel.options[select_artikel.length] = new Option(produkte[key], key);
  }
}
window.onload = function() {
set_produkte();
}

I deo za dodavanje elementa:

Kôd:

function addEvent()
{
var ni = document.getElementById('myDiv');
var numi = document.getElementById('theValue');
var num = (document.getElementById("theValue").value -1)+ 2;
numi.value = num;
var divIdName = "my"+num+"Div";
var newdiv = document.createElement('div');
newdiv.setAttribute("id",divIdName);
newdiv.innerHTML = "Novi element";
ni.appendChild(newdiv);
document.getElementById('myDiv').focus();
}

function removeEvent(divNum)
{
var d = document.getElementById('myDiv');
var olddiv = document.getElementById(divNum);
d.removeChild(olddiv);
}

Umesto 'Novi element' stavio sam celu tabelu sa podacima da se dodaje, videces na primeru forme sa linka...

Najbolje da pogledas source stranice da ne kopiram ceo code ovde.
Prvo sam pomislio da dodam
Kôd:

document.getElementById('myDiv').focus();
set_produkte();

Medjutim lose razmisljam, probao sam i onClick set_produkte(), takodje ne moze...

japan 11. 03. 2007. 20:33

ne znam da li je to problem, ali mi je prvo upalo u oči. koliko god puta da dodaš novi artikal, sva polja se isto zovu, tj imaju isti id, a to baš i nije dobro. verovatno se svaki put kad pozoveš set_produkte() ta funkcija lepo izvrši, ali samo za prvi artikal, tako da razmisli malo kako da ti polja imaju različite id-jeve, pa ćeš time verovatno rešiti i ovaj problem.

jablan 11. 03. 2007. 22:13

Čekaj ovako. Kad dodaš novi artikal, kreira ti se novi par comboa. Šta je problem, što je novi combo sa artiklima prazan? Ne vidim da ga negde nečim puniš.

Takođe, onchange na novom combu vezan je za funkciju koja radi sa fiksnim form elementima, tj. uvek menja prvi dropdown za izbor boja.

twix 11. 03. 2007. 22:24

Prvi artikal koji vidis napunjen je:

window.onload = function() {
set_produkte();
}

A svaki sledeci koji se doda...
Citat:

Ne vidim da ga negde nečim puniš.
Pa to je ono sto mene i muci, kako svaki sledeci artikal koji dodam da popunim...

jablan 11. 03. 2007. 22:33

Pa pozovi istu funkciju. S tim što ćeš morati da je proširiš za parametar pomoću koga će znati koji dropdown treba da napuni.

Posle toga ćeš imati još par problema da rešiš, pomenuti sa punjenjem dropdowna sa bojama, kao i prosleđivanje i serversko prihvatanje vrednosti iz dinamički kreiranih kontrola. Drugim rečima, ako nisi iskusan sa JS-om, tvoj kod će postati masa nerazmrsivih dodela i getElementById-jeva.

Ja bih ti savetovao da se ili maneš cele client-script akrobatike i sve uradiš serverski, ili redizajniraš formu tako da u svakom trenutku imaš samo jedan par dropdownova. A u svakom slučaju da razmotriš učenje jQuery-ja ili nečeg sličnog.

Srećno! ;)


Vreme je GMT +2. Trenutno vreme je 21:58.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.