2016-09-29 2 views
0

Ich habe diesen HTML:document.getElementById für ein Element in externen HTML

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Notas</title> 

    <script type="text/javascript" src="notas.js"></script> 

</head> 
<body> 

    <p>Nombre alumno: </p> 
    <input type="text" name="nombre" id="nombre"> 
    <p>Nota alumno:</p> 
    <input type="text" name="nota"> 

    <p><br></p> 
    <input type="button" name="boton" value="Enviar" onclick="respuesta()"> 

</body> 
</html> 

Und diese Javascript in einer anderen Datei:

function respuesta(){ 

    nombrej=document.getElementById("nombre"); 
    document.write(nombrej); 
} 

Das Problem, dass, wenn ich auf die Schaltfläche klicken die Nachricht "Null" Ich habe Lösungen zu einem ähnlichen Problem im Forum sehen, aber ich weiß nicht, was zu tun ist, da es eine Schaltfläche gibt. Hilfe!

+0

Dieser JS ist in einem anderen Dokument? Sie haben ein Popup oder einen Iframe? – Teemu

+0

Funktioniert für mich: https://jsfiddle.net/1qa3vu1x/ Überprüfen Sie, ob Sie die richtige JS-Datei enthalten. –

+2

Ich kann keinen Weg sehen, der möglicherweise ein anderes Ergebnis als eine Serialisierung eines HTML-Eingabeelements geben könnte ... was ich bekomme, wenn ich [den Code teste] (http://jsbin.com/zicafe/1/edit ? html, Ausgabe). Sie scheinen den Schritt "Stellen Sie sicher, dass das Beispiel den Fehler tatsächlich reproduziert" bei der Erstellung von [MCVE] übersehen zu haben. – Quentin

Antwort

0

JavaScript getElementById gibt das DOM-Element zurück. Um den Wert dieser Texteingabe zu erhalten, müssen Sie den Wert erhalten.

Anstelle von: nombrej = document.getElementById ("nombre");

Verwendung: nombrej = document.getElementById ("nombre"). Value;

Beispiele: JavaScript: how to get value of text input field?

+0

Sie haben eine Zeit vor dem Wert vergessen – joh04667

+0

Das OP sagte, dass 'nombrej'' null' war. Der Versuch, '.value' von' null' zu lesen, würde eine Ausnahme auslösen. – Quentin

+0

Ich habe meinen Beitrag aktualisiert, danke joh04667. @Quentin, du hast Recht. Ich las den Code durch und reagierte mit dem offensichtlichsten Problem für mich. T. J. Crowders Antwort wird gründlicher beantwortet. – MarkBowman

1

Es gibt ein paar Probleme gibt:

  1. Sie nicht nombrej erklärt. (Und sollte das nicht nombre sein?) Das bedeutet, dass Ihr Code The Horror of Implict Globals(das ist ein Beitrag in meinem Blog) Opfer fällt. Deklariere deine Variablen.

  2. Sie haben nombrej auf HTMLInputElement gesetzt. Sie wollten wahrscheinlich seinen Wert, der auf seiner value Eigenschaft ist.

  3. Wenn die Seite document.write aufgerufen wird, wird implizit document.open aufgerufen, was die Seite löscht und durch das ersetzt, was Sie schreiben.

respuesta könnte so etwas wie dieses stattdessen So aussehen:

function respuesta(){ 

    var nombrej=document.getElementById("nombre").value; 
// ^^^--- #1         ^^^^^^--- #2 
    console.log(nombrej); 
// ^^^^^^^^^^^--- #3 
} 

Randbemerkung: Ich sehe, Sie haben Ihre script-Tag im head Abschnitt setzen. Du wirst viele Leute finden, die das tun und dir sagen, dass du es tun sollst, aber es ist ein Anti-Pattern. Wenn Sie nicht einen bestimmten Grund haben, etwas anderes zu tun, setzen Sie script Tags ganz am Ende von body, kurz vor dem schließenden Tag. Mehr in YUI's guidelines.

+0

Vielen Dank! Das Problem war das Fehlen einer Deklaration und das Fehlen des Werts in getElementById. –

Verwandte Themen