• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Podmiana wartości input a, na wartość input b po kliknięciu przycisku. problem z atrybutem name.

Object Storage Arubacloud
0 głosów
1,204 wizyt
pytanie zadane 12 lipca 2017 w JavaScript przez Wojtek Janiak Nowicjusz (170 p.)

Cześć, uczę się dopiero JavaScriptu. Moim celem jest podmiana wartości value w input o name="quantity[509]" na wartość value inputa o name="a" po kliknięciu przycisku. Czy ktoś mi jest w stanie wyjaśnić, dlaczego wersja 1 działa, a wersja 2 nie? Zmienia się tylko nazwa. Czy nawias [] tutaj przeszkadza? W jaki sposób zrobić to, tak, żeby funkcja działała z nawiasem?
Wersja 1


<code>
<html>
<body>
<script language="javascript">
<!--
function zmiana(){
document.moj.b.value=document.moj.a.value
}
-->
</script>
<form name="moj">
<input type="text" name="a">
<input type="number" class="input-text qty text" step="1" min="0" max="" name="b" value="0" title="Szt." size="4" pattern="[0-9]*" inputmode="numeric">
<button type="button" onclick="zmiana()">Antał</button>
</form>
</body>
</html></code>


Wersja 2


<code><html>
<body>
<script language="javascript">
<!--
function zmiana(){
document.moj.quantity[509].value=document.moj.a.value
}
-->
</script>
<form name="moj">
<input type="text" name="a">
<input type="number" class="input-text qty text" step="1" min="0" max="" name="quantity[509]" value="0" title="Szt." size="4" pattern="[0-9]*" inputmode="numeric">
<button type="button" onclick="zmiana()">Antał</button>
</form>
</body>
</html>
</code>

 

2 odpowiedzi

0 głosów
odpowiedź 13 lipca 2017 przez Jedras Maniak (54,860 p.)
wybrane 13 lipca 2017 przez Wojtek Janiak
 
Najlepsza
komentarz 13 lipca 2017 przez Wojtek Janiak Nowicjusz (170 p.)
Dziękuje za pomoc :)
komentarz 13 lipca 2017 przez Wojtek Janiak Nowicjusz (170 p.)

A gdybym chciał button zastąpić divem po którego wczytaniu uruchamia się funkcja?
 

	
	
	<html>

<form>
    <input style="display: none;" name="a" type="text" value="3" />
	  <input style="display: none;" name="b" type="text" value="2" />
	  <input style="display: none;" name="c" type="text" value="1" />
	  <input style="display: none;" name="d" type="text" value="1" />
	  <input style="display: none;" name="e" type="text" value="2" />
	  <input style="display: none;" name="f" type="text" value="3" />
	  <input style="display: none;" name="g" type="text" value="3" />
	  <div onclick="zmiana()"</div>
	 
</form>



<script type="text/javascript">
    function zmiana(){
      document.getElementsByName('quantity[509]')[0].value=document.getElementsByName("a")[0].value;
	  document.getElementsByName('quantity[343]')[0].value=document.getElementsByName("b")[0].value;
	  document.getElementsByName('quantity[511]')[0].value=document.getElementsByName("c")[0].value;
	  document.getElementsByName('quantity[339]')[0].value=document.getElementsByName("d")[0].value;
	  document.getElementsByName('quantity[400]')[0].value=document.getElementsByName("e")[0].value;
	  document.getElementsByName('quantity[372]')[0].value=document.getElementsByName("f")[0].value;
	  document.getElementsByName('quantity[361]')[0].value=document.getElementsByName("g")[0].value;
	  
    }
    </script>
      
      </html>
	  
	  <form>
      <input  name="quantity[509]" type="text" value="0" />
	  <input  name="quantity[343]" type="text" value="0" />
	  <input  name="quantity[511]" type="text" value="0" />
	  <input  name="quantity[339]" type="text" value="0" />
	  <input  name="quantity[400]" type="text" value="0" />
	  <input  name="quantity[372]" type="text" value="0" />
	  <input  name="quantity[361]" type="text" value="0" />
	  
	 
</form>
	  
	 

 

+1 głos
odpowiedź 12 lipca 2017 przez Comandeer Guru (602,340 p.)

Podstawy składni JS. Nawiasy kwadratowe służą do odwoływania się do własności obiektów. Stąd drugi przykład nie działa. Jak już to [ 'quantity[509]' ].

PS ten skrypt wygląda jakby pochodził z tamtego tysiąclecia…

komentarz 14 lipca 2017 przez niezalogowany

Jakiego elementu? Znaczniki <script> </script> powinny być zawsze na końcu body, wtedy będziesz miał pewność, że Ci się wszystko wczyta. 

 Więcej się uczę. :)

No chyba się nie uczysz, bo wciąż masz on-click. 

Podpinanie zdarzeń

komentarz 15 lipca 2017 przez Wojtek Janiak Nowicjusz (170 p.)

Przepraszam. Wkleiłem zły kod. 

Zrobiłem to tak:
 

	
	
	<html>

<form>
    <input style="display: none;" name="a" type="text" value="3" />
	  <input style="display: none;" name="b" type="text" value="2" />
	  <input style="display: none;" name="c" type="text" value="1" />
	  <input style="display: none;" name="d" type="text" value="1" />
	  <input style="display: none;" name="e" type="text" value="2" />
	  <input style="display: none;" name="f" type="text" value="3" />
	  <input style="display: none;" name="g" type="text" value="3" />
	  <div onload="zmiana()"</div>
	 
</form>



<script type="text/javascript">
    function zmiana(){
      document.getElementsByName('quantity[509]')[0].value=document.getElementsByName("a")[0].value;
	  document.getElementsByName('quantity[343]')[0].value=document.getElementsByName("b")[0].value;
	  document.getElementsByName('quantity[511]')[0].value=document.getElementsByName("c")[0].value;
	  document.getElementsByName('quantity[339]')[0].value=document.getElementsByName("d")[0].value;
	  document.getElementsByName('quantity[400]')[0].value=document.getElementsByName("e")[0].value;
	  document.getElementsByName('quantity[372]')[0].value=document.getElementsByName("f")[0].value;
	  document.getElementsByName('quantity[361]')[0].value=document.getElementsByName("g")[0].value;
	  
    }
    </script>
      
      </html>
	  
	  <form>
      <input  name="quantity[509]" type="text" value="0" />
	  <input  name="quantity[343]" type="text" value="0" />
	  <input  name="quantity[511]" type="text" value="0" />
	  <input  name="quantity[339]" type="text" value="0" />
	  <input  name="quantity[400]" type="text" value="0" />
	  <input  name="quantity[372]" type="text" value="0" />
	  <input  name="quantity[361]" type="text" value="0" />
	  
	 
</form>
	  
	 

 

komentarz 15 lipca 2017 przez Wojtek Janiak Nowicjusz (170 p.)
Chciałbym po prostu, żeby funkcja zmiana zaczytała się wraz z wczytaniem strony/elementu. Ma się po prostu wykonać. Nie chcę tego wymusić przez <body onload="zmiana()">  szukam innego sposobu.
1
komentarz 15 lipca 2017 przez niezalogowany
edycja 15 lipca 2017

Jest parę sposobów. Możesz:

readystatechange

W każdym razie na pewno zapomnij o <body onload oraz o "onclick". 


(możesz też wywołać tą funkcję po prostu na końcu body, za pomocą zmiana(), ale to to chyba wiesz? ;)) 

komentarz 16 lipca 2017 przez Wojtek Janiak Nowicjusz (170 p.)

Udało mi się osiągnąć to co chcialem. Tak to wygląda, co o tym myślicie:

 


	
	
	
	
	<html>

<form>
      <input style="display: none;" name="a" type="text" value="3" />
	  <input style="display: none;" name="b" type="text" value="2" />
	  <input style="display: none;" name="c" type="text" value="1" />
	  <input style="display: none;" name="d" type="text" value="1" />
	  <input style="display: none;" name="e" type="text" value="2" />
	  <input style="display: none;" name="f" type="text" value="3" />
	  <input style="display: none;" name="g" type="text" value="3" />
	  
	 
</form>
<!-- <div onload="zmiana()"</div> -->


<script type="text/javascript">
    function zmiana(){
      document.getElementsByName(x)[0].value=document.getElementsByName("a")[0].value;
	  document.getElementsByName('quantity[343]')[0].value=document.getElementsByName("b")[0].value;
	  document.getElementsByName('quantity[511]')[0].value=document.getElementsByName("c")[0].value;
	  document.getElementsByName('quantity[339]')[0].value=document.getElementsByName("d")[0].value;
	  document.getElementsByName('quantity[400]')[0].value=document.getElementsByName("e")[0].value;
	  document.getElementsByName('quantity[372]')[0].value=document.getElementsByName("f")[0].value;
	  document.getElementsByName('quantity[361]')[0].value=document.getElementsByName("g")[0].value;
	  
    }
    </script>
      
      </html>
	  
	  <form>
      <input  name="quantity[509]" type="text" value="0" />
	  <input  name="quantity[343]" type="text" value="0" />
	  <input  name="quantity[511]" type="text" value="0" />
	  <input  name="quantity[339]" type="text" value="0" />
	  <input  name="quantity[400]" type="text" value="0" />
	  <input  name="quantity[372]" type="text" value="0" />
	  <input  name="quantity[361]" type="text" value="0" />
	  
<script type="text/javascript">
document.getElementsByName('body').onload = zmiana();
</script>	 
</form>

 

Podobne pytania

0 głosów
1 odpowiedź 1,519 wizyt
pytanie zadane 23 maja 2017 w HTML i CSS przez ayo1001 Obywatel (1,890 p.)
0 głosów
2 odpowiedzi 1,615 wizyt
–1 głos
1 odpowiedź 635 wizyt

92,631 zapytań

141,498 odpowiedzi

319,869 komentarzy

62,011 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...