Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS] tworzenie funkcji w pętli
Forum PHP.pl > Forum > Po stronie przeglądarki
R_Przemek
Witam

Mam szybkie pytanie, czy da się definiować nazwy funkcji ze zmiennej w javascript ?

to znaczy, mam coś takiego:
  1. <script type="text/javascript">
  2. //pierwsza
  3. var nazwa1 = function () {
  4. //tutaj coś robię1...
  5. }
  6. //pierwsza
  7. //druga
  8. var nazwa2 = function () {
  9. //tutaj coś robię2...
  10. }
  11. //druga
  12. //trzecia
  13. var nazwa3 = function () {
  14. //tutaj coś robię3...
  15. }
  16. //trzecia
  17. //czwarta
  18. var nazwa4 = function () {
  19. //tutaj coś robię4...
  20. }
  21. //czwarta
  22.  


a wilał bym mieć coś w stylu:

  1. <script type="text/javascript">
  2. for (i = 1; i <= 4; i++) {
  3.  
  4.  
  5. var nazwa + i = function () {
  6. //tutaj coś robię1...
  7. }
  8.  
  9.  
  10. }


Jednak coś takiego nie działa.
markuz
[JAVASCRIPT] pobierz, plaintext
  1. var functions = {};
  2. for(var i = 0; i < 4; i++) {
  3. functions[i] = function(i) {
  4. console.log(i);
  5. };
  6. }
  7.  
  8. for(var f in functions) {
  9. functions[f](f);
  10. }
[JAVASCRIPT] pobierz, plaintext
R_Przemek
A co jeżeli do mojej funkcji generowanej wiele razy przyjdzie mi wstawić

  1. setTimeout("function()", 1000); //<--- czas odswiezania


Tak aby coś wykonywało mi się automatycznie co sekundę ?

kod:
  1. setTimeout("function[i](i)", 1000); //<--- czas odswiezania

nie działa.
markuz
Pokaż cały kod
R_Przemek
  1. <script type="text/javascript">
  2.  
  3. var functions = {};
  4. for(var i = 1; i < 16; i++) {
  5. functions[i] = function(i) {
  6. //
  7. //dane z php do zmiennej
  8. $.get('wykonaj.php?action=read&pin='+i, function( my_v ) {
  9.  
  10. if (my_v == '0') {
  11. document.getElementById("pozition_ster_manual_c_"+i).style.backgroundColor = "green";
  12. }
  13. if (my_v == '1') {
  14. document.getElementById("pozition_ster_manual_c_"+i).style.backgroundColor = "red";
  15. }
  16. })
  17. //setTimeout(functions[i](i), 1000); //<--- czas odswiezania
  18. //
  19. }
  20. }
  21.  
  22. //for(var f in functions) {
  23. // functions[f](f);
  24. //}
  25.  
  26.  
  27. for(var w = 1; w < 16; w++) {
  28.  
  29. $(document).ready(function(){ // wyzwolenie autoodswierzania
  30. functions[w](w);
  31. });
  32.  
  33. }
  34.  


Gdy setTimeout nie ma skrypt poprawnie koloruje tła moich divów na stonie, jednak chcę by skrypt na bieżąco kontrolował zmienną "my_v == '0'" i odpowiednio ustawiałbackground color bez przeładowania strony.
markuz
[JAVASCRIPT] pobierz, plaintext
  1. var pins = [];
  2.  
  3. var Pin = function(id) {
  4. this.id = id;
  5. this.element = document.getElementById('pozition_ster_manual_c_' + id);
  6. };
  7.  
  8. Pin.prototype.refresh = function() {
  9. var self = this;
  10. $.get('wykonaj.php?action=read&pin=' + self.id, function(value) {
  11. self.element.style.background = value == '0' ? 'green' : 'red';
  12. });
  13. };
  14.  
  15. $(document).ready(function() {
  16.  
  17. for(var i = 1; i < 16; i++)
  18. pins.push(new Pin(i));
  19.  
  20. setInterval(function() {
  21. for(var i = 0; i < pins.length; i++)
  22. pins[i].refresh();
  23. }, 1000);
  24.  
  25. });
[JAVASCRIPT] pobierz, plaintext


Bardziej optymalnie było by wszystko sprowadzić do 1 requesta który zwracał by informacje o wszystkich pinach.
R_Przemek
ojoj, ogólnie rzecz biorąc kod działa poprawnie, jednak zanim go przeanalizuje i zrozumiem trochę minie smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.