Dostęp do zmiennej w obiekcie a raczej jego brak.

0

Witam, pytanie głupie z założenia aczkolwiek nie znam na nie odpowiedzi.

Jak uzyskać dostęp do zmiennej w obiekcie ?

pierwsza funkcja tworzy mi listę obiektów z którą następnie chciałbym pracować, jednak konsola wywala mi że obiekt is not defined.

0

Pokaż kod.

0

a w jaki sposób odwołujesz się do tej zmiennej?

0

  function Zawodnik(imie,index)
    {
      // Kod konstruktora
      this.imie = imie;
      this.index = index;

    }

function zatwierdz()
    {
      var player = new Array(ilu);

      for(var i=0 ; i < player.length ; i++)
      {
        var inputImie = document.getElementById("dv"+i);
        inputImie.readOnly = true;
        var imie = inputImie.value;
        player[i] = new Zawodnik(imie, i);

      }
    }

Funkjca tworzy tablice z obiektami, teraz chciałbym dostać się do zmiennych z pozycji innej funkcji

0

W jaki sposób próbujesz się odwołać?

0

staram się wypluć imie zawodnika przez console.log(player[0].imie)

0

no to spróbuj console.log(player) i zobacz co ci wyjdzie.

poza tym - w którym miejscu dokładnie wywala ci się błąd? Możliwe, że błąd jest na poziomie document.getElementById (chyba, że to sprawdzałeś już).

0

"player is not defined" :D Czuje się jak idiota nie potrafiąc zrozumieć o co w tym chodzi :D

0

<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="utf-8" />
<style>
    body
    {
        background-color: #222222;
        font-size: 24px;
        color: white;
    }
    input[readonly] {
      background: red;
    }
</style>
</head>

<body>


  <input type="number" id="obecni" placeholder="Ilu nas jest">
  <input type="submit" value="Go !" onclick="sprawdz()"/>

  <div id="zat" ></div>



  <script type="text/javascript">
    var maxIlu = 15;
    var ilu = 0; // 10

    var mainDiv = document.createElement('div');
    mainDiv.id = "formularz";
    document.body.appendChild(mainDiv);

    function Zawodnik(imie,index)
    {
      // Kod konstruktora
      this.imie = imie;
      this.index = index;

    }


    function deleteElement(index)
    {
      index = parseInt(index);
      document.getElementById("test" + index).remove();
      ilu--;

      if (ilu == 0) {
        document.getElementById("zat").innerHTML = "";
      }
    }


    function sprawdz()
    {
      mainDiv.innerHTML = "";

      ilu = parseInt(document.getElementById("obecni").value);
      if(ilu > maxIlu){
        alert("Nie możesz dać więcej niż 15!");
        return;
      }

      for(var i=0 ; i < ilu ; i++)
      {
        var div = document.createElement('div');
        div.id = 'test'+i;
        var zawartoscHtml = '<input type="text" id="dv' + i +'" placeholder="name">';
        zawartoscHtml += '<button type="button" onclick="deleteElement('+ i +')">X</button>';
        zawartoscHtml += '<button type="button" onclick="kolejny_button('+ i +')">3PT</button>';
        div.innerHTML = zawartoscHtml;
        mainDiv.appendChild(div);
      }
    }

    document.getElementById("zat").innerHTML = '<button type="button" onclick="zatwierdz()">Zatwierdz</button>' ;


    function zatwierdz()
    {
      var player = new Array(ilu);

      for(var i=0 ; i < player.length ; i++)
      {
        var inputImie = document.getElementById("dv"+i);
        inputImie.readOnly = true;
        var imie = inputImie.value;
        player[i] = new Zawodnik(imie, i);

      }
    }

    function kolejny_button(numer)
    {
    console.log(player)
    }



  </script>
</body>
</html>


Cały kod

0

Poczytaj o zmiennych lokalnych i globalnych.

0

może nie tyle (nie tylko) o zmiennych lokalnych i globalnych, co o różnych zasięgach(scopes) zmiennych.
@magnusik22 , poczytaj sobie https://github.com/getify/You-Dont-Know-JS/tree/master/scope%20%26%20closures

 function zatwierdz()
   {
      var player = new Array(ilu);
     //....
    }

    function kolejny_button(numer)
    {
    console.log(player)
    }

jeśli zadeklarowałeś zmienną w funkcji zatwierdz to nie będzie ona widoczna w funkcji kolejny_button. Możesz wyciągnąć tę zmienną poza obręb funkcji. Np.

 var player;
 function zatwierdz()
   {
      player = new Array(ilu);
     //....
    }

    function kolejny_button(numer)
    {
    console.log(player)
    }

 document.getElementById("zat").innerHTML = '<button type="button" onclick="zatwierdz()">Zatwierdz</button>' ;

wrzucanie zatwierdz() w onclick to anty-wzorzec. Tak się nie powinno robić generalnie.

ten fragment nawet nie działa po wrzuceniu na jsfiddle:
https://jsfiddle.net/2n1dyzqo/

( (index):1 Uncaught ReferenceError: zatwierdz is not defined at HTMLButtonElement.onclick ((

Nie wiem co chcesz osiągnąć, ale lepiej będzie zrobić coś takiego:

var el = document.createElement('button');
el.addEventListener('click', function zatwierdz() {  
   // jakis kod 
});
mainDiv.appendChild(el);
0

Dzięki wielkie, o to mi chodziło !!!!! Całość ma służyć do liczenia statystyk zawodników na meczach. Każdy zawodnik będzie mieć kilka buttonow od poszczególnych zdarzeń na boisku. Dopiero zaczynam zabawę z JS i miotam się jak we mgle ;)

0

Miotasz się jak we mgle bo nie znasz podstaw. Przeczytaj dokładnie i nie będziesz się miotał... przynajmniej nie aż tak na początku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1