Próbuję uprościć pewne informacje na temat mojej strony.

Jest dwie różne. typy użytkowników, studenci i inne. Wiele miejsc i sklepów oferuje rabat dla studentów, a zatem udostępniłbym to dostępnym z polem wyboru, które zmienia niektóre skrypty. To jest mój przykład (uproszczony tak dobry jak mógłbym):

<head>
<script TYPE="text/javascript" SRC="script/script_uteplasser.js"></script>
</head>
<body>
<form action="">
<input type="checkbox" id="checkbox_student"  onclick="student();"><span>I'm A student!</span></input></form>
(...)
</body>

Javascript (script_utesplasser):

//--------------------SAMFUNDET---------------------
samfundet = "...blablablabla..." + cc_samfundet() + "...blablablabla...";
//----INNGANGSAV. SAMFUNDET----

var checkbox1 = document.getElementById("checkbox_student");
function student(){
    if (checkbox1.checked){
    function cc_samfundet(){var d=new Date(); var theDay=d.getDay(); switch (theDay) { case 1: return "Free"; break;  case 2: return "Free"; break;  case 3: return "Free"; break;  case 4: return "Free"; break;  case 5: return "Free"; break;  case 6: return "Free"; break;  case 0: return "Free";}}
    }
    else{
    function cc_samfundet(){var d=new Date(); var theDay=d.getDay(); switch (theDay) { case 1: return "100,-"; break;  case 2: return "100,-"; break;  case 3: return "100,-"; break;  case 4: return "100,-"; break;  case 5: return "100,-"; break;  case 6: return "100,-"; break;  case 0: return "100,-";}}
    }
}
//-------------------------------------------------

Nie zabija to skryptu, ale też nie zwraca żadnych informacji.

0
Freshman 8 grudzień 2013, 16:32

2 odpowiedzi

Najlepsza odpowiedź

Nie zwraca nic, ponieważ definiujesz tylko swoje funkcje w swojej ewaluacji. Jeśli później dodasz drugą parę nawiasów, powinno działać, jak zamierzasz.

Mówi się, że jest to naprawdę słaby wzór projektu. Najpierw nie musisz tu robić, co robisz tutaj funkcje. Drugi tworzy tę samą funkcję dwukrotnie z całkowicie oddzielną logiką - to prawie hamuje każdą dobrą zasadę programowania.

Aktualizacja Aktualizacja : Oto coś, co wskazuje w odpowiednim kierunku,

var checkbox1 = document.getElementById("checkbox_student");
// Assuming this function should do something else too?
function student() {
    cc_samfundet(checkbox1.checked);
}

var cc_samfundet = function (isStudent) {
    var d = new Date();
    var theDay = d.getDay();
    switch (theDay) {
        case 1:
            return isStudent ? "Free" : "100,-";
            // and so on
    }
}
0
Index 8 grudzień 2013, 13:01

Dlaczego chcesz przedefiniować funkcję?

Możesz sprawdzić w swojej funkcji, jeśli zaznaczone jest pole wyboru. Jeśli chcesz, naprawdę przedefiniować funkcję, użyj tego kodu:

//declare your function :
function cc_samfundet () {
    //...
}
//or :
var cc_samfundet2 = function () { /* ... */ };

//redefine your function :
cc_samfundet = function () {
    //...
}
//or with an existing function :
cc_samfundet = cc_samfundet2;
1
A-312 8 grudzień 2013, 13:03