2016-08-28 7 views
8

Ok, tak bardzo nowości w JavaScript. Próbując nauczyć się kodu, wystarczy zmienić tekst na przycisku za pomocą zewnętrznego pliku javascript. Ale nie mogę nawet uzyskać javascriptu, aby odczytać wartości przycisków z zewnątrz, w narzędziach do debugowania Chrome widzę, że moja wartość przycisku to btn = "". Odczytuje obiekt przycisku, ale nie może odczytać jego właściwości.Javascript nie przekazuje informacji do funkcji z html

<html> 
<head> 

    <title> Test </title> 
    <script type="text/javascript" src="Gle.js"></script> 
</head> 

<body> 
    <div><canvas id="Gle" width="800" height="600"></canvas> 
</div> 
    <div> 
     <h2>Enter the mass and coordinates</h2> 
     <input id="txtbox" type="text" /><br/> 
     <button id="btn" onclick="change()">Add</button> 

    </div> 


    </body> 
</html> 

Gle.js

"use strict"; 


function change() { 
    var x = document.getElementById("btn").value; 
    var elem = document.getElementById("btn"); 
    var txt = document.getElementById("txtbox"); 
    txt.text = elem.value; 
    elem.value = "Ok"; 
    } 

Kiedy debugowanie wartość x to jest "", nic się nie zmienia na ekranie. Używam nawiasów IDE.

+1

Dlaczego nie wystarczy użyć słowa kluczowego 'this', aby uzyskać przycisk? – Li357

+0

1. Utwórz MCVE. To nie jest ** sposób, w jaki publikujesz właściwe pytanie na SO. 2. Jaką "wartość" oczekujesz od przycisku? – Amit

+0

Spodziewam się, że tytuł przycisku "Dodaj" pojawi się z x w oknie debugowania zegarka. – CromeX

Odpowiedz

8

x jest pusta, ponieważ '#btn' nie ma „wartość” atrybut określony. „Dodaj” string jest wewnątrz jego wewnętrznej HTML (lub tekst),

alert(document.getElementById("btn").innerText); 

I można Indeks this w zakresie zdarzeń, to odniesienie '#btn', this.innerText.

Alternatywą jest uzyskanie wartości węzłów podrzędnych '#btn', czyli w różnych przeglądarkach.

alert(this.childNodes[0].nodeValue); 

To ostrzeże pierwszy tekst określony w elemencie wewnętrznym.

+3

Dzięki Guys, to pomocne, aby połączyć kropki, czasami trzeba po prostu umieścić tam myśli. Zauważyłem, że obiekt

+2

@CromeX Jeśli szukasz różnic, możesz sprawdzić http: // stackoverflow.com/q/469059 # 26818133, ta odpowiedź ma dobry cytat – Hydro

0

Można spróbować poprzez przypisanie atrybutu value do button

<button id="btn" onclick="change()" value="Add">Add</button> 
1

Spodziewam się, że pojawi się tytuł przycisku "Dodaj"?

Przycisk nie posiada atrybut value więc jego value nieruchomość jest pustym ciągiem.

"Dodaj" to zawartość węzła tekstowego wewnątrz elementu przycisku.

var x = document.getElementById("btn").firstChild.data; 
0

Jeśli chcesz zaktualizować tekst przycisku w oparciu o to, co jest w polu tekstowym kod mógłby wyglądać następująco:

<button id="myButton">Change Me</button> 
<input id="myInput" type="text" value="To This"/> 

aw JS:

document.getElementById("myButton").click(function(){ 
    var inputValue = document.getElementById("myInput").value 
    document.getElementById("myButton").innerText = inputValue 
    // You could also use 'this' to refer to document.getElementById("myButton"): 
    // this.innerText = inputValue 
}) 
Powiązane problemy