ugrás a tartalomhoz

Az első legördülő menü alapján legyenek a másodikban az adatok

zsszil · 2006. Okt. 1. (V), 09.09
Szisztok!

Olyan gondom problémám lenne, hogy szeretnék létrehozni egy árajánlat kérőt. Az árajánlat kérő űrlapon szerepel két kiválasztő mező. A probléma az, hogy a második mező tartalma függ az első mező tartalmától. Hogy tudom megoldani, hogyha az első legördülő menüből kiválasztok valamit, akkor a második legördülő menüben az elsőhöz tartozó adatok jelenjenek meg.
Én gondoltam az oldal frissítésére, de nem tudom technikailag hogyan tudom megoldani. Előre is köszönöm a segítséget.
 
1

3 megoldás

pint3r · 2006. Okt. 1. (V), 09.36
Én 3 megoldást tudok, az egyik: lekérdezed újra az egész oldalt (ahogy Te is írtad) és átadod az összes változót, aztán azok alapján mikor generálja az űrlapot az első listából kiválasztott elemhez tartozó elemeket generálod le a második listához. Ez nagy látogatottságnál sok HTTP kérés, nagyobb terhelés.

A másik javascript, én ezt használtam pont ugyanilyen probléma megoldására, ekkor az első lista onchange eseményére kell beállítani a javascriptet, annak átadni a kiválasztott értéket, a js-ben pedig ezt lekezelni. Ehhez a javascriptbe az oldal generálásakor le kell generálni az összes választási lehetőséget, így nagy listánál jól megnöveli a HTML kódot, cserébe viszont nem kéred le minden választáskor újra az egész űrlapot.

A harmadik pedig az AJAX, bár ezt nem használtam, amit viszont eddig olvastam róla, erre tökéletes lenne, ekkor is lesz egy lekérés, viszont nem az egész oldalt frissíted, csak a szükséges részt.
Az én olvasatomban ez utóbbi az előbbi kettő kombinációja, de ha rosszul látom vagy tévedek, majd kijavítanak. ;)
2

Ajax

Jano · 2006. Okt. 1. (V), 09.40
Csak abban az esetben van értelme AJAX-ot használni, ha nagyon sok adat tartozik az egyes opciókhoz (pl települések megyénként), különben már oldal generáláskor érdemes letöltetni őket.
10

Az 1. kötelező

attlad · 2006. Okt. 1. (V), 14.04
Az első megoldást annyival egészíteném ki, hogy az nem opcionális hanem követelmény kéne legyen, anélkül csak féllábú megoldást kapsz (pl. ha csak JavaScripttel műdödik a cucc). Ha már működik utána lehet kiegészíteni JavaScriptes megoldásokkal.
11

ezzel az a gond

toxin · 2006. Okt. 1. (V), 14.09
hogy Magyarisztánban, nem fogják elfogadni az árajanlatodat (túl sok lesz) tapasztalat, egyetlen megoldásként most a prototype-ot látom(hihetetlen mértékben leszorítja a fejlesztési időt), és a lap elején egy javascript vizsgálatot

üdv t
12

Egyszerű ahhoz

attlad · 2006. Okt. 1. (V), 14.42
Ez az egyszerű dolog nem sokat dobna rajta.
13

jaj bocsi

toxin · 2006. Okt. 1. (V), 14.47
nem konkrétra mondtam, hanem arra, hogy nem fér bele általában, egy független js-es és js nélküli kliens oldali verzió, a fejlesztési időbe :(

üdv t :)
3

csak php

krey · 2006. Okt. 1. (V), 09.48

<form method="post" action="">
 <input type="text" name="blabla" value=" 
<?
empty($_POST['blabla']) ? null : 
print(stripslashes(htmlspecialchars($_POST['blabla']))) ; 
?>"/>
 <input type="submit" />
</form>
Ez nem konkrét megoldás, de rá lehet jönni belőle, remélem.

üdv. krey
4

JavaScript

Anonymous · 2006. Okt. 1. (V), 10.36
Én egy egyszerű scriptel oldanám meg. Találkoztam már én is ilyen problémával, és ott így csináltam. Ez első listának fixek az elemei.
A második listát a script építi fel, az első listában kiválasztottak függvényében.

Itt a kód:
function SetSubTypeValues() {
  SelectBox = document.getElementById("edit-type");
  SubSelectBox = document.getElementById("edit-subtype");

  ssb_length = SubSelectBox.length;

  for ( i = 0; i <= ssb_length; ++i) {
    SubSelectBox.remove(0);
  }

  if (SelectBox.value == "egyik_lehetoseg") {
    SubSelectBox.options[0] = new Option('select type:','seltype');
    SubSelectBox.options[1] = new Option('egyik','egyik');
    SubSelectBox.options[2] = new Option('masik','masik');
    SubSelectBox.options[3] = new Option('harmadik','harmadik');
  } else {
    SubSelectBox.options[0] = new Option('select type:','seltype');
    SubSelectBox.options[1] = new Option('valami','valami');
    SubSelectBox.options[2] = new Option('valami mas','vmas');
    SubSelectBox.options[3] = new Option('akarmi','akarmi');
  }

}
5

re

toxin · 2006. Okt. 1. (V), 10.38
a free verziót bepötyögtem neked, a többiért fizetni kell :)) , egyébként nem azért, hanem a többi már konkrét megvalósítás függő

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
<title>option test</title>

<script src="./scripts/prototype.js" type=""></script>
<script src="./scripts/scriptaculous.js" type=""></script>

<script language="javascript" type="text/javascript">

window.onload = function(){
    var select_1 = Builder.node('select',{id:'select_1',size:16});

    for (var i=0;i<=15;i++)
    {
        var tempOptNode = Builder.node('option',{id:'opt'+i,value:+i},'test'+i);
        select_1.appendChild(tempOptNode);
        tempOptNode.selected = false
    }
    delete tempOptNode;
    $('wrapper_1').appendChild(select_1);

    $('wrapper_2').appendChild(select_1.cloneNode(true));
    Element.down('wrapper_2','select').id = 'select_2';

    
    select_1.onclick = function(){
         $('select_2').options[$("select_1").selectedIndex].selected = true;
    }


}
</script>
</head>
<body>
<div id='wrapper_1'></div>
<div id='wrapper_2'></div>
</body>
</html>

demo

elején csak a feldobtam 2 select-et a lényeg ennyi

 select_1.onclick = function(){
         $('select_2').options[$("select_1").selectedIndex].selected = true;
    }
fx,opera,ie alatt néztem (prototype, scriptaculous kódbázis), nyilván kikapcsolt js, szerveroldalon lekezelendő

üdv t

ui: a franc beelőztek :))

ui2: valós életben pl. a kapcsolt select-et a forrás value-ival kéne indexelni (value->id) és úgy kapcsolgatni, ezzel már nem xarakodtam (konkrét megvalósítással)


ui3 : jahh hogy nem ez volt a kérdés :))) (francnak kódolok én vasárnap reggel) de már mindegy, mindjárt megcsinálom amit kértél, legalább lesz egy ilyen class-om is :)
6

Javascriptes móka

vbence · 2006. Okt. 1. (V), 12.15
A polopokol.hu oldalon 3 paramétert választasz a pólónak ezekből bizonyos kombináció lehetséges, mások nem. Túrj bele a forrásba, és ott van minden. - JS tömbben vannak szótárakként a számokhoz tartozó megnevezések, a lehetséges összeállítások pedig már csak id formájában vannak tárolva.
7

megvan

toxin · 2006. Okt. 1. (V), 12.16
fx,ie,opera alatt megy, hátmégcsak gondolatébresztő kiadás, de ingyé adom :))

én is Jano általit javaslom, az ajax menteset, közben persze már a tetszőleges számú select hozzáadásoson gondolkoztam, de azt majd ha megfizettek :)


var mySimpleConnectedSelects = 

    Class.create();
    mySimpleConnectedSelects.prototype = {
        
        initialize : function(select_wrapper_1,select_wrapper_2){
            this.sWrapper_1 = $(select_wrapper_1);
            this.sWrapper_2 = $(select_wrapper_2);

            this.destSelects = [];
            
            this.selectSource = Builder.node('select',{id:'select_from'});
            this.sWrapper_1.appendChild(this.selectSource);
                        
            this.selectSource.onchange = function(event){
                var actSelect =  Event.element(event);
                if (!actSelect.selectedIndex) return;
                
                var actDestSelect = actSelect.options[actSelect.selectedIndex].value;
                Element.update(this.sWrapper_2,'');
                
                if (this.destSelects[actDestSelect])  this.sWrapper_2.appendChild(this.destSelects[actDestSelect].cloneNode(true));
                delete actDestSelect;
            }.bindAsEventListener(this);
            
        },
        
        addOptionsToSource : function(oOptions){
            
            oOptions.each(
                function(option,index){
                    var tempOptNode = Builder.node('option',{id:option.id,value:option.value},option.text);
                    this.selectSource.appendChild(tempOptNode);
                    tempOptNode.selected = false;
                }.bind(this)
            );
        },
        
        addDestSelects : function(oSelects){
            
            oSelects.each(
                function(select,index){
                    this.tempSelectNode = Builder.node('select',{id:select.id,size:select.options.length});     
                    this.destSelects[select.id] = this.tempSelectNode;
                    
                    select.options.each(
                        function(option,index){
                           var tempOptionNode = Builder.node('option',{id:option.id,value:option.value},option.text);                        
                           this.tempSelectNode.appendChild (tempOptionNode);
                           tempOptionNode.selected = false
                           delete (tempOptionNode);
                        }.bind(this)
                    )
                }.bind(this)
            )
           
        }
}

window.onload = function(){

    mySelects = new mySimpleConnectedSelects('wrapper_1','wrapper_2');

    mySelects.addOptionsToSource([
        {id:'opt_1',value:'select_1',text:'kapcsolt select 1'},
        {id:'opt_2',value:'select_2',text:'kapcsolt select 2'},
        {id:'opt_3',value:'select_3',text:'kapcsolt select 3'}
    ]);
    
    mySelects.addDestSelects([
        {id:'select_1',options:[
                {id:'opt_4',value:'option_4',text:'kapcsolt option 4'},
                {id:'opt_5',value:'option_5',text:'kapcsolt option 5'},
                {id:'opt_6',value:'option_6',text:'kapcsolt option 6'}  
            ]   
        },
        {id:'select_2',options:[
                {id:'opt_7',value:'option_7',text:'kapcsolt option 7'},
                {id:'opt_8',value:'option_8',text:'kapcsolt option 8'},
                {id:'opt_9',value:'option_9',text:'kapcsolt option 9'}  
            ]   
        },
        {id:'select_3',options:[
                {id:'opt_10',value:'option_10',text:'kapcsolt option 10'},
                {id:'opt_11',value:'option_11',text:'kapcsolt option 11'},
                {id:'opt_12',value:'option_12',text:'kapcsolt option 12'}  
            ]   
        }       
    ]);
    
    
}
http://toxin.hu/weblabor/select/select2.html
ha kellene kommentezett verzió szóljatok

üvd mindenkit, a vasárnapi programozás nagy barátja t :)))

ui: hoop leltem egy bug-ot

if (!actSelect.selectedIndex) return;


erre
if (actSelect.selectedIndex == undefined) return;

lapomon javítottam
8

Ohne Prototype

Jano · 2006. Okt. 1. (V), 12.52
Toxin rengeteg energiád van és bizonyítottad, hogy prototype-pal gyorsan és elegánsan megoldható a feladat. Prototype-nak egy pont. De egy ilyen speciális feladathoz vajon szükséges egy viszonylag nagy prototype.js behúzása? Lehet kicsit tovább tart a kódolás prototype nélkül, de végén sokezer usernek spórolunk majd meg néhány tucat kilobytot.
9

méret

toxin · 2006. Okt. 1. (V), 13.00
belehet csatolni így

src='prototype.js.gz' (safarin nem megy)

akkor csak 12,479kb, scriptaculous hacsak a builder ..?loader=builder akkor 6k,
ill. van még jópár mód amivel lehet nyomni a méretét a js cuccoknak, ill. lehet követni a moofx példáját és lite verziókat használni (csak ami az akt kódhoz kell) moofx-en 3k a mérete a prototype lite-nak

üdv t

ui: egyébként miért érdekes annyira, egyszer kell lehúzni 60k-át onnantól gyorstárból megy :P :)

ui2:

Lehet kicsit tovább tart a kódolás prototype nélkül


nem kicsit, nagyon (honnan ismerős ez a szöveg :D, de most kampánycsend van :))) ) , írj meg egy ilyet cross browser kódbázis nélkül , eredeti js oop-vel
http://ideafontana.com/newgarden/?vpath=/aktualitasok/noveny_kereso/kerti_balkon_novenyek/#

majd tapsolok :) , magyarán arra célzok hogy ez ugyan itt egy kis feladat, de csak rész, a teljes árajánlat kérőben számtalan ilyen lehet, pláne ha a teljes lapot nézzük

ui3: nem energiakérdése, egyrészt ILUVPROTOTYPE :D másrész muszáj sokat gyakorlni, mert üfnek nem adhatok végtelenhez konvergáló óra x bérről árajánlatot :)
30

selected használata

this.isti · 2016. Jan. 8. (P), 00.34
A függvényedbe próbáltam becsempészni azt, hogy selected-el ki lehessen jelölni oldal betöltésekor elemet, de nem igazán sikerült.
Az oldal betöltésekor nem jelölődik ki az aktuális elem, pedig a paraméterei közé beteszi a selected-et.
Ellenben ha az 1. listában bejelölök valamit, a 2. listában már működik a selected.

Hogy lehetne rábírni, hogy az első listában is működjön?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
<title>option test</title>


<!--
<script type="text/javascript" src="http://script.aculo.us/prototype.js"></script><script type="text/javascript" src="http://script.aculo.us/scriptaculous.js"></script>-->
<script type="text/javascript" src="scripts/prototype.js"></script><script type="text/javascript" src="scripts/scriptaculous.js"></script>

<script language="javascript" type="text/javascript">

    var mySimpleConnectedSelects =   
      
        Class.create();  
        mySimpleConnectedSelects.prototype = {  
              
            initialize : function(select_wrapper_1,select_wrapper_2){  
                this.sWrapper_1 = $(select_wrapper_1);  
                this.sWrapper_2 = $(select_wrapper_2);  
      
                this.destSelects = [];  
                  
                this.selectSource = Builder.node('select',{id:'select_from'});  
                this.sWrapper_1.appendChild(this.selectSource);  
                              
                this.selectSource.onchange = function(event){  
                    var actSelect =  Event.element(event);  
                    if (actSelect.selectedIndex == undefined) return;
                      
                    var actDestSelect = actSelect.options[actSelect.selectedIndex].value;  
                    Element.update(this.sWrapper_2,'');  
                      
                    if (this.destSelects[actDestSelect])  this.sWrapper_2.appendChild(this.destSelects[actDestSelect].cloneNode(true));  
                    delete actDestSelect;  
                }.bindAsEventListener(this);  
                  
            },  
              
            addOptionsToSource : function(oOptions){  
                  
                oOptions.each(  
                    function(option,index){
						if(option.selected) var tempOptNode = Builder.node('option',{id:option.id,value:option.value,selected:option.selected},option.text); 
						else				var tempOptNode = Builder.node('option',{id:option.id,value:option.value},option.text);  
                        this.selectSource.appendChild(tempOptNode);  
                        tempOptNode.selected = false;  
                    }.bind(this)  
                );  
            },  
              
            addDestSelects : function(oSelects){  
                  
                oSelects.each(  
                    function(select,index){  
                        this.tempSelectNode = Builder.node('select',{id:select.id,size:select.options.length});       
                        this.destSelects[select.id] = this.tempSelectNode;  
                          
                        select.options.each(  
                            function(option,index){  
                               if(option.selected) var tempOptionNode = Builder.node('option',{id:option.id,value:option.value,selected:option.selected},option.text)  
                               else				   var tempOptionNode = Builder.node('option',{id:option.id,value:option.value},option.text)                    
                               this.tempSelectNode.appendChild (tempOptionNode);  
                               tempOptionNode.selected = false  
                               delete (tempOptionNode);  
                            }.bind(this)  
                        )  
                    }.bind(this)  
                )  
                 
            }  
    }  
      
    window.onload = function(){  
      
        mySelects = new mySimpleConnectedSelects('wrapper_1','wrapper_2');  
      
        mySelects.addOptionsToSource([
            {id:'opt_0',value:'select_0',text:'Válasszon!', selected:false}, 
            {id:'opt_1',value:'select_1',text:'kapcsolt select 1', selected:false},  
            {id:'opt_2',value:'select_2',text:'kapcsolt select 2', selected:false},  
            {id:'opt_3',value:'select_3',text:'kapcsolt select 3', selected:true}  
        ]);  
          
        mySelects.addDestSelects([
            {id:'select_1',options:[
                    {id:'opt_4',value:'option_4',text:'kapcsolt option 4', selected:false},  
                    {id:'opt_5',value:'option_5',text:'kapcsolt option 5', selected:true},  
                    {id:'opt_6',value:'option_6',text:'kapcsolt option 6', selected:false}    
                ]     
            },  
            {id:'select_2',options:[
                    {id:'opt_7',value:'option_7',text:'kapcsolt option 7', selected:false},  
                    {id:'opt_8',value:'option_8',text:'kapcsolt option 8', selected:false},  
                    {id:'opt_9',value:'option_9',text:'kapcsolt option 9', selected:true}    
                ]     
            },  
            {id:'select_3',options:[
                    {id:'opt_10',value:'option_10',text:'kapcsolt option 10', selected:false},  
                    {id:'opt_11',value:'option_11',text:'kapcsolt option 11', selected:false},  
                    {id:'opt_12',value:'option_12',text:'kapcsolt option 12', selected:false} ,  
                    {id:'opt_13',value:'option_13',text:'kapcsolt option 13', selected:true}    
                ]     
            }         
        ]);  
          
          
    }  
</script>
</head>
<body>
<div id='wrapper_1'></div>
<div id='wrapper_2'></div>
</body>
</html>
14

Kód ohne Prototype

Jano · 2006. Okt. 1. (V), 15.03
Legyen ilyesmi a HTML, ahol a lényeg, hogy az első selectnek legyen egy ID-ja, a második select helyét pedig jelölje egy DIV, aminek szintén van ID-ja.

<form>

 <select id="lemez_tipus">
  <option value="0">Válassz lemezt</option>
  <option value="cd">CD</option>
  <option value="dvd">DVD</option>
 </select>

 <div id="tok_hely">
 </div>

</form>
Adjuk át az oldalnak ilyen formában a lehetséges értékeket:

var tokok = {
  "cd": [
    {value:"tok1",text:"papir"},
    {value:"tok2",text:"slim CD tok"},
    {value:"tok3",text:"normál CD tok"}
  ],
  "dvd":[
    {value:"tok1",text:"papir"},
    {value:"tok4",text:"slim DVD tok"},
    {value:"tok5",text:"normál DVD tok"}  
  ]
}
Ekkor használhatjuk ezt a függvénykét:

function selectHandler(foId,alDivId,alId,alTomb) {
  this.foSelectNode = document.getElementById(foId);
  this.alDivNode = document.getElementById(alDivId);
  this.alId = alId;
  this.alTomb = alTomb;
  
  this.alSelect = function () {
    var value = this.foSelectNode.options[this.foSelectNode.selectedIndex].value;
    this.alDivNode.innerHTML = "";
    
    if (typeof this.alTomb[value] != "undefined") {
      var ujSelect = document.createElement("select");
      this.alDivNode.appendChild(ujSelect);
      ujSelect.id = this.alId;

      for (var i = 0; i < this.alTomb[value].length; i++) {
        ujSelect.options[i] = new Option(this.alTomb[value][i].text,this.alTomb[value][i].value);
      }    
    }   
  }
  
  var self = this;
  this.foSelectNode.onchange = function () {self.alSelect()};

  return this;
}

var tokSelect = selectHandler("lemez_tipus","tok_hely","lemez_tok",tokok);
15

hihi

toxin · 2006. Okt. 1. (V), 15.20
Jano nem kell győzködni hogy tisztább és szebb a prototype kódja, tudom :))))))
(de azért örülök, hogy már kis kódnál is látszik)

üdv t :)
16

Mi van?

Jano · 2006. Okt. 1. (V), 16.18
Hát te tudod. Aki ezt nehezen olvashatónak tartja az menjen kapálni.

Csak arra akartam felhívni a figyelmet, hogy nem kell mindent Ajaxozni, meg "frameworkolni", bizonyos egyszerű feladatok elvégezhetők úgyis ahogy eddig csináltuk.
17

nem mondtam ám komolyan

toxin · 2006. Okt. 1. (V), 16.45
csak félig, próbáltam is jelezni :) , viszont nagyobb js oop (protochain-es class-okkal), már tud vicces lenni, lásd pl. ProForm kódja, prototype-ban az a jó hogy logikájában kisértetiesen hasonlít a php4 oop-re (csak jobb a megvalósítás) :)

http://opensource.nexum.hu/

ill. ilyen kisérleti dolgokat gyorsan lehet vele írni mint pl. a 'kitujda mire jó' http://www.xml-blog.com/frametastic/index.html -t :))

üdv t

ui: undefined miért van nálad idézőjelben :S
http://htmlinfo.polyhistor.hu/js13ref/toplev.htm#1094680
18

typeof

Jano · 2006. Okt. 1. (V), 17.12
Prototype: Itt most erről a problémáról van szó és nem általános dolgokról!

Typof stringet ad vissza, azért van idézőjelben, mert stringgel hasonlítom össze.
The typeof operator returns a string indicating the type of the unevaluated operand.

Core JavaScript 1.5 Guide:Operators:Special Operators typof
19

köszi

toxin · 2006. Okt. 1. (V), 17.19
én most is olyan class-t írtam volna amibe tetszőleges számú select beledobálható ill. összekapcsolható, csak az már nem félóra, lehet hogy kettő :) , gyakorlatban nem feladatokra szoktam megoldásokat írni hanem adott feladatípusra keresem legáltalánosabb megoldást (code recycling , lustaság, stb. miatt lásd, crossForm-om mint erre kiváló példát)

üdv t
20

szezon-fazon

Hodicska Gergely · 2006. Okt. 1. (V), 21.56
ui: undefined miért van nálad idézőjelben

Mert tudja, hogy mi az a typeof operátor? ;)


Felhő
21

igen kedves szerkesztő úr

toxin · 2006. Okt. 1. (V), 22.22
önnek teljesen igaza van :) , mentségemre, hogy nem is néztem az if elejét, utólag igen, és a typeof -ot is
http://htmlinfo.polyhistor.hu/js13ref/ops.htm#1042603

amit már ismertem de sose használtam, mivel prototype-ban eddig nem volt nagyon rá szükségem, ill. kicsit se lévén

var foo = [];
console.log (foo.foo);
console.log (typeof(foo.foo));
kimenet undefined és "undefined"

üdv t

lábjegyzet: igazság szerint visszafele tanulom a js-t , kezdve az Ajax in Action c. könyv, hogyan álljunk át js oop-re egyéb nyelvről, át a prototype-scriptaculous-on , és csak most vagyok a http://htmlinfo.polyhistor.hu/js13guide/contents.htm -nél , ezért futok bele ilyen malőrökbe, de ha nem kérdezem meg akkor ugye most se tudnám :) (másrászt IE bugjai elviszik az időt a js tanulástól, és az IE bugjait tanulom a végén meg, nem a js-t :( de azért igyekszem)
22

ágyú

Hodicska Gergely · 2006. Okt. 2. (H), 00.41
Jano nem kell győzködni hogy tisztább és szebb a prototype kódja, tudom :))))))

Talán kiderült, hogy számomra is szimpatikus a prototype, meg a hasonló keretrendszerek, de azért a fenti feladat kb. 10 soros JS scripttel megoldható (példa), ezért tényleg felesleges lehet bevetni egy komplett keretrendszert.


Felhő
23

re

toxin · 2006. Okt. 2. (H), 08.05
ha a fent nevezett lapon, tényleg csak ebben az esetben/ezért van a szükség js-re, és semmi másra, akkor valóban, ha azonban van formkezelő (nálam ugye ez crossForm lenne ... ) ill. egyébb js-es feladatok és azok a feladatok majd ismétlődnek a cég ill. programozó további munkájában ... , ne csak a fát nézzük , ha van/lehet erdő is :) .

üdv t
25

Általános vs konkrét

Jano · 2006. Okt. 2. (H), 09.26
Toxin, jó hogy gondolsz az általános dolgokra, de sokszor ez teljesen felesleges. Az ilyen kis feladatoknál jobban jársz ha megírod gyorsan, hogy megcsinálja a feladatot és mész tovább a következő fajsúlyosabb problémára. Ha elkezdesz további funkciókat bele venni, általánosítani akkor csak növeled a munkaidőd, esetleg további hibákat generálsz és ugyse tudod eltalálni, hogy legközelebb mire lesz szükséged.

Anonymous feljebb megadta a választ. Én ezt egy picit általánosítottam, hogy konkrét értékek ne legyenek bele kódolva és paraméterként lehessen mindent átadni. De véleményem szerint ennél tovább menve az már másik feladat lenne.

Javaslom, hogyha szeretnéd folytatni ezt a vitát, akkor índítsunk neki új topikot.
26

re

toxin · 2006. Okt. 2. (H), 09.41
ez most kezd olyan lenni mint a struktúrált vs OOP vita, a szemléletek csatája :)) , de mostmár dógozni kell, estve folyt köv. vagy nem :)

üdv t

ui: a rövidlátó, koncepciótlan, feladatorientált kódra egyébként jó példa az állásokban nemrég hírdetett http://www.liligo.fr/air/index.jsp js kódja, FireBug-al megnézhető. Ha idekerül egy új ember akinek a feladata a meglévő js kód továbbfejlesztése ill. karbantartása azt nem irgylem,márpedig sitebuilder-t kerestek és nem véletlenül, nagyon úgynézki, hogy fejükre omlott a kliens oldal :) . Mentségükre szól, hogy 8 hónapja kezdték a fejlesztést és akkor még tényleg nemvoltak crossbrowser kódbázisok megnyugtató verziószámmal elérhetőek.
27

kalapács szög

Hodicska Gergely · 2006. Okt. 2. (H), 11.40
ne csak a fát nézzük , ha van/lehet erdő is :)

Megfordítva: akinek kalapács van a kezében, az hajlamos mindent szögnek nézni. ;)


Felhő
28

háát

toxin · 2006. Okt. 2. (H), 11.42
ebben is igazság vagyon :)) , mentségemre hogy prototype-ban annyira érződik a készítő zsenialitása (riszkpekt Sam Stephenson) , hogy öröm vele dolgozni :)) , Értem ezalatt, hogy amit kitalálok az általában megy is alatta (úgynanúgy gondolom ahogy Sam, a megoldást, intuitív fejlesztés örömei), vs php ahol mindig elgáncsolja a zsenimet a rendszer :)) . Másképpen fogalmazva prototype-olás közben folyamatosan érzem hogy segítani akarja a munkámat, php-val meg harcolni kell egy adott feladat megodlásáért :) . Remélem majd a Ruby terjedésével, lehetséges lesz a váltás szerver oldalon is :) , azon un. azt érzem mint a prototype-pon .

üdv t
24

Compacting Prototype.js and Scriptaculous

toxin · 2006. Okt. 2. (H), 08.47
speciel nem ezt kerestem, de szembejött (spec ebben pl. 60k -ból 18k lett)

http://www.stevekallestad.com/blog/compacting_prototypejs_and_sc

lehet bekéne blogmarkba is tenni, ha gondoljátok, nemtudom volt-e :)

üdv t
29

volt

KergeKacsa · 2006. Okt. 2. (H), 23.00
Volt már:
http://weblabor.hu/blog/20060129/cssjstomorites

Viszont IE alatt nem tökéletes, jópár esetben egyáltalán nem találja a tömörített CSS ill. JS fájlt. Kár érte :(