PSD-Tutorials.de
Forum für Design, Fotografie & Bildbearbeitung
Tutkit
Agentur
Hilfe
Kontakt
Start
Forum
Aktuelles
Besonderer Inhalt
Foren durchsuchen
Tutorials
News
Anmelden
Kostenlos registrieren
Aktuelles
Suche
Suche
Nur Titel durchsuchen
Von:
Menü
Anmelden
Kostenlos registrieren
App installieren
Installieren
JavaScript ist deaktiviert. Für eine bessere Darstellung aktiviere bitte JavaScript in deinem Browser, bevor du fortfährst.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen
alternativen Browser
verwenden.
Antworten auf deine Fragen:
Neues Thema erstellen
Start
Forum
Sonstiges
Webdesign, Webentwicklung & Programmierung
PHP, Javascript, jQuery, Ajax, nodeJS, MySQL...
kleines problem mit javascript
Beitrag
<blockquote data-quote="Duddle" data-source="post: 2036729" data-attributes="member: 17775"><p><strong>AW: kleines problem mit javascript</strong></p><p></p><p>Dann hoffe ich mal, dass ich dich korrekt verstanden habe. Hier mal im gesamten:</p><p>[HTML]</p><p><html></p><p> <head></p><p><script language="javascript" type='text/javascript'></p><p></p><p>var valueColorMapping = {};</p><p></p><p>// holt farb-id fuer namen</p><p>function getColorByName(name) {</p><p> if(valueColorMapping[name] === undefined) {</p><p> var max = -1;</p><p> for(var key in valueColorMapping) {</p><p> max = Math.max(valueColorMapping[key], max);</p><p> }</p><p> valueColorMapping[name] = max+1;</p><p> }</p><p> return valueColorMapping[name];</p><p>}</p><p>// aufgerufen bei namens-wahl</p><p>function personSelected(form) {</p><p> var selected = form.options[form.selectedIndex];</p><p> person=selected.value;</p><p> perscol=getColorByName(selected.text);</p><p>}</p><p></p><p>// bei absenden des formulars fuer jeden namen die farb-id in einem hidden input festhalten</p><p>function enregistrer() {</p><p> var form = document.getElementById("myform");</p><p> for(var key in valueColorMapping) {</p><p> var val = valueColorMapping[key];</p><p></p><p> var inp = document.createElement('input');</p><p> inp.setAttribute('type', 'hidden');</p><p> inp.setAttribute('name', 'colorMapping['+key+']');</p><p> inp.setAttribute('value', val);</p><p> form.appendChild(inp);</p><p> }</p><p> form.submit();</p><p>}</p><p></p><p>var perscol = -1; </p><p>var last_attributed = -1;</p><p>var color = new Array(); </p><p>var person = "";</p><p>var ptitle = '';</p><p>var col_last = getCookie("colors[last]");</p><p>var temp = 0;</p><p>if (col_last!='') last_attributed = col_last;</p><p></p><p>function getCookie(name) {</p><p></p><p> if (document.cookie.length>0) {</p><p> start = document.cookie.indexOf(name+"=");</p><p> pos = start+name.length+1;</p><p> if (start != 0) {</p><p> start = document.cookie.indexOf("; "+name+"=");</p><p> pos = start+name.length+3;</p><p> }</p><p> if (start != -1) {</p><p> start = pos;</p><p> end = document.cookie.indexOf(";",start);</p><p> if (end == -1) end = document.cookie.length;</p><p> return unescape(document.cookie.substring(start,end));</p><p> }</p><p> }</p><p> return '';</p><p>}</p><p>function controle_affect_color(val,name) {</p><p> if (val != 0) {</p><p> if (color[val] == null) {</p><p> var col_attrib = getCookie("colors["+name+"]");</p><p> if (col_attrib!='') color[val] = col_attrib;</p><p> else {</p><p> color[val] = parseInt(last_attributed)+1;</p><p> document.cookie = "colors["+name+"]="+color[val]+";";</p><p> last_attributed++;</p><p> document.cookie = "colors[last]="+last_attributed+";";</p><p> }</p><p> }</p><p> ptitle=name;</p><p> return color[val];</p><p> }</p><p> ptitle='';</p><p> return -1;</p><p>}</p><p></p><p>function maj_img(id,obj,name,src) {</p><p> var div=document.getElementById("total");</p><p> div.innerHTML="<PRE>HEURES ALLOUEES:\n";</p><p> if ((name!=obj.alt)&&(person!=0)) {</p><p> document.getElementById(id).value=person;</p><p> obj.src="img/plan/"+src+".png";</p><p> if(obj.alt=='') temp+=25;</p><p> obj.alt=name;</p><p> obj.title=name;</p><p> } else {</p><p> document.getElementById(id).value=-1;</p><p> obj.src="img/plan/-1.png";</p><p> obj.alt='';</p><p> obj.title='';</p><p> if (temp>0) temp-=25;</p><p> }</p><p> if (temp/100>0) div.innerHTML+=Math.floor(temp/100)+"h"+temp%100+"min</PRE>";</p><p> else div.innerHTML+=temp+"min</PRE>";</p><p>}</p><p></script></p><p> <style type="text/css"></p><p> .day {</p><p> text-align: center;</p><p> vertical-align: top;</p><p> font-size: 60%;</p><p> font-weight: bold;</p><p> }</p><p> .spc {</p><p> font-size: 50%;</p><p> }</p><p> img {</p><p> border: 0;</p><p> vertical-align: middle;</p><p> }</p><p> form {</p><p> margin: 0px;</p><p> padding: 0px;</p><p> }</p><p> </style></p><p> </head></p><p> <body><center></p><p> <div id="color" style="visibility:hidden;"></div></p><p> <form id="myform" method="post"></p><p> <select name="pers" onChange="personSelected(this);"></p><p> <option value="0" selected>----</option></p><p> <option value="10">Rémi</option></p><p> <option value="20">Marcel</option></p><p> <option value="30">Michel</option></p><p> <option value="40">Christiane</option></p><p> <option value="50">Julien</option></p><p> <option value="60">Matthieu</option></p><p> <option value="70">Vincent</option></p><p> <option value="80">Stéphane</option></p><p> <option value="90">Marc</option></p><p> </select></p><p> <br /><br /><br /></p><p> <table summary="" border="0" cellspacing="0" cellpadding="0"></p><p> <tr></p><p> <td class="day" style="height:15px;">Hrs-></td></p><p><?php</p><p>if (isset($_POST['tab'])) {</p><p> echo "<pre>";</p><p> print_r($_POST['tab']);</p><p> echo "<br>";</p><p> print_r($_COOKIE['colors']);</p><p> echo "</pre>";</p><p>}</p><p>else for($j=0;$j<1;$j++) for($i=0;$i<96;$i++) $l[$j][$i]=-1;</p><p>$jrs = array("Lun","Mar","Mer","Jeu","Ven","Sam","Dim");</p><p>for($k=0;$k<24;$k++) echo '<td class="day" colspan="5">'.$k.'</td>';</p><p>echo "\r</tr>";</p><p>for($j=0;$j<1;$j++) {</p><p> echo '<tr></p><p> <td valign="middle">'.$jrs[$j].'&nbsp;</td>';</p><p> for($i=0;$i<96;$i++) {</p><p> if ($i%4==0) echo '<td class="spc">&nbsp;</td>';</p><p> $color = -1;</p><p> if (isset($_COOKIE['colors'])) {</p><p> $l[$j][$i] = trim($l[$j][$i]);</p><p> if (array_key_exists($l[$j][$i], $_COOKIE['colors']) !== false) $color = $_COOKIE['colors'][$l[$j][$i]];</p><p> }</p><p> echo '<td valign="middle"></p><p> <input id="'.$j.$i.'" type="hidden" name="tab['.$j.']['.$i.']" value="'.$l[$j][$i].'" /></p><p> <img src="img/plan/'.$color.'.png" onClick="maj_img(\''.$j.$i.'\',this,ptitle,perscol);" alt="" title="" /></p><p> </td>';</p><p> }</p><p> echo "\r</tr>\n\t";</p><p>}</p><p>?></p><p> </table></p><p> <br /></p><p> <input type="submit" value="enregistrer" onclick="enregistrer(this); return false;"/></p><p> </form></p><p> <div id='total' style="float:center; position:relative; center:75px;"></div></p><p> </center></body></p><p></html></p><p>[/HTML]</p><p>Du kannst das ja selber diffen, ich habe aber praktisch im Quelltext fast nichts geändert. Bei der Auswahl im <select> wird jetzt eine Hilfsfunktion aufgerufen, bei Absenden des Formulars eine andere, das Formular selbst hat jetzt eine id.</p><p></p><p>Das tatsächlich neue sind die 3 Funktionen am Anfang, vor deinem alten Zeug. Ich habe die vorhandenen Funktionen nicht angefasst, da ich mich nicht durch Abhängigkeiten usw. durchkämpfen wollte.</p><p></p><p>Prinzipiell ist es aber nur ein Objekt, das für diesen einen Seitenaufruf die Farbzuordnung verwaltet. Das getColorByName() holt die für den Namen zugewiesene Farb-ID oder setzt im Bedarfsfall eine neue. </p><p></p><p>Das personSelected() ist quasi das gleiche, was du vorher im onchange vom <select> hattest. Das enregistrere() hängt sich vor das normale Abschicken und erzeugt lediglich pro Name/Farb-ID - Paar ein verstecktes input, dann wird das Formular normal abgeschickt.</p><p></p><p></p><p>Duddle</p></blockquote><p></p>
[QUOTE="Duddle, post: 2036729, member: 17775"] [b]AW: kleines problem mit javascript[/b] Dann hoffe ich mal, dass ich dich korrekt verstanden habe. Hier mal im gesamten: [HTML] <html> <head> <script language="javascript" type='text/javascript'> var valueColorMapping = {}; // holt farb-id fuer namen function getColorByName(name) { if(valueColorMapping[name] === undefined) { var max = -1; for(var key in valueColorMapping) { max = Math.max(valueColorMapping[key], max); } valueColorMapping[name] = max+1; } return valueColorMapping[name]; } // aufgerufen bei namens-wahl function personSelected(form) { var selected = form.options[form.selectedIndex]; person=selected.value; perscol=getColorByName(selected.text); } // bei absenden des formulars fuer jeden namen die farb-id in einem hidden input festhalten function enregistrer() { var form = document.getElementById("myform"); for(var key in valueColorMapping) { var val = valueColorMapping[key]; var inp = document.createElement('input'); inp.setAttribute('type', 'hidden'); inp.setAttribute('name', 'colorMapping['+key+']'); inp.setAttribute('value', val); form.appendChild(inp); } form.submit(); } var perscol = -1; var last_attributed = -1; var color = new Array(); var person = ""; var ptitle = ''; var col_last = getCookie("colors[last]"); var temp = 0; if (col_last!='') last_attributed = col_last; function getCookie(name) { if (document.cookie.length>0) { start = document.cookie.indexOf(name+"="); pos = start+name.length+1; if (start != 0) { start = document.cookie.indexOf("; "+name+"="); pos = start+name.length+3; } if (start != -1) { start = pos; end = document.cookie.indexOf(";",start); if (end == -1) end = document.cookie.length; return unescape(document.cookie.substring(start,end)); } } return ''; } function controle_affect_color(val,name) { if (val != 0) { if (color[val] == null) { var col_attrib = getCookie("colors["+name+"]"); if (col_attrib!='') color[val] = col_attrib; else { color[val] = parseInt(last_attributed)+1; document.cookie = "colors["+name+"]="+color[val]+";"; last_attributed++; document.cookie = "colors[last]="+last_attributed+";"; } } ptitle=name; return color[val]; } ptitle=''; return -1; } function maj_img(id,obj,name,src) { var div=document.getElementById("total"); div.innerHTML="<PRE>HEURES ALLOUEES:\n"; if ((name!=obj.alt)&&(person!=0)) { document.getElementById(id).value=person; obj.src="img/plan/"+src+".png"; if(obj.alt=='') temp+=25; obj.alt=name; obj.title=name; } else { document.getElementById(id).value=-1; obj.src="img/plan/-1.png"; obj.alt=''; obj.title=''; if (temp>0) temp-=25; } if (temp/100>0) div.innerHTML+=Math.floor(temp/100)+"h"+temp%100+"min</PRE>"; else div.innerHTML+=temp+"min</PRE>"; } </script> <style type="text/css"> .day { text-align: center; vertical-align: top; font-size: 60%; font-weight: bold; } .spc { font-size: 50%; } img { border: 0; vertical-align: middle; } form { margin: 0px; padding: 0px; } </style> </head> <body><center> <div id="color" style="visibility:hidden;"></div> <form id="myform" method="post"> <select name="pers" onChange="personSelected(this);"> <option value="0" selected>----</option> <option value="10">Rémi</option> <option value="20">Marcel</option> <option value="30">Michel</option> <option value="40">Christiane</option> <option value="50">Julien</option> <option value="60">Matthieu</option> <option value="70">Vincent</option> <option value="80">Stéphane</option> <option value="90">Marc</option> </select> <br /><br /><br /> <table summary="" border="0" cellspacing="0" cellpadding="0"> <tr> <td class="day" style="height:15px;">Hrs-></td> <?php if (isset($_POST['tab'])) { echo "<pre>"; print_r($_POST['tab']); echo "<br>"; print_r($_COOKIE['colors']); echo "</pre>"; } else for($j=0;$j<1;$j++) for($i=0;$i<96;$i++) $l[$j][$i]=-1; $jrs = array("Lun","Mar","Mer","Jeu","Ven","Sam","Dim"); for($k=0;$k<24;$k++) echo '<td class="day" colspan="5">'.$k.'</td>'; echo "\r</tr>"; for($j=0;$j<1;$j++) { echo '<tr> <td valign="middle">'.$jrs[$j].' </td>'; for($i=0;$i<96;$i++) { if ($i%4==0) echo '<td class="spc"> </td>'; $color = -1; if (isset($_COOKIE['colors'])) { $l[$j][$i] = trim($l[$j][$i]); if (array_key_exists($l[$j][$i], $_COOKIE['colors']) !== false) $color = $_COOKIE['colors'][$l[$j][$i]]; } echo '<td valign="middle"> <input id="'.$j.$i.'" type="hidden" name="tab['.$j.']['.$i.']" value="'.$l[$j][$i].'" /> <img src="img/plan/'.$color.'.png" onClick="maj_img(\''.$j.$i.'\',this,ptitle,perscol);" alt="" title="" /> </td>'; } echo "\r</tr>\n\t"; } ?> </table> <br /> <input type="submit" value="enregistrer" onclick="enregistrer(this); return false;"/> </form> <div id='total' style="float:center; position:relative; center:75px;"></div> </center></body> </html> [/HTML] Du kannst das ja selber diffen, ich habe aber praktisch im Quelltext fast nichts geändert. Bei der Auswahl im <select> wird jetzt eine Hilfsfunktion aufgerufen, bei Absenden des Formulars eine andere, das Formular selbst hat jetzt eine id. Das tatsächlich neue sind die 3 Funktionen am Anfang, vor deinem alten Zeug. Ich habe die vorhandenen Funktionen nicht angefasst, da ich mich nicht durch Abhängigkeiten usw. durchkämpfen wollte. Prinzipiell ist es aber nur ein Objekt, das für diesen einen Seitenaufruf die Farbzuordnung verwaltet. Das getColorByName() holt die für den Namen zugewiesene Farb-ID oder setzt im Bedarfsfall eine neue. Das personSelected() ist quasi das gleiche, was du vorher im onchange vom <select> hattest. Das enregistrere() hängt sich vor das normale Abschicken und erzeugt lediglich pro Name/Farb-ID - Paar ein verstecktes input, dann wird das Formular normal abgeschickt. Duddle [/QUOTE]
Bilder bitte
hier hochladen
und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Zitate einfügen…
Authentifizierung
Wenn ★ = 12, ◇ = 4 und die Hälfte von ★ zu ◇ addiert wird, was ist das Ergebnis?
Antworten
Start
Forum
Sonstiges
Webdesign, Webentwicklung & Programmierung
PHP, Javascript, jQuery, Ajax, nodeJS, MySQL...
kleines problem mit javascript
Oben