2016-09-29 3 views
0

У меня есть этот HTML:document.getElementById для элемента внешнего 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> 

И это Javascript в другом файле:

function respuesta(){ 

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

Проблема в том, что при нажатии на кнопку сообщение является «null» У меня есть проблемы с аналогичной проблемой на форуме, но я не знаю, что делать, поскольку есть кнопка. Помогите!

+0

Этот JS находится в другом документе? У вас всплывающее окно или iframe? – Teemu

+0

Работает для меня: https://jsfiddle.net/1qa3vu1x/ Дважды проверьте, что вы включаете правильный JS-файл. –

+2

Я не вижу никакого способа, который мог бы дать результат, кроме сериализации элемента ввода HTML ... что я получаю, когда я [проверяю код] (http://jsbin.com/zicafe/1/edit ? HTML, выход). Кажется, вы пропустили шаг «Убедитесь, что пример действительно воспроизводит проблему», когда вы создали свой [MCVE]. – Quentin

ответ

0

JavaScript getElementById возвращает элемент DOM. Чтобы получить значение этого ввода текста, вам нужно получить его значение.

Вместо: nombrej = document.getElementById ("nombre");

Использование: nombrej = document.getElementById ("nombre"). Value;

Примеры: JavaScript: how to get value of text input field?

+0

Вы забыли период до 'value' – joh04667

+0

OP сказал, что' nombrej' был 'null'. Попытка прочитать '.value' из' null' вызовет исключение. – Quentin

+0

Я обновил свой пост, спасибо joh04667. @Quentin, вы правы. Я прочитал код и ответил тем, что было самой очевидной проблемой для меня. Ответ Т. Дж. Кроудера более тщательно ответил. – MarkBowman

1

Есть несколько проблем там:

  1. Вы не объявили nombrej. (И не должно быть nombre?) Это означает, что ваш код падает до The Horror of Implict Globals(это сообщение в моем блоге). Объявите переменные.

  2. Вы установили nombrej в HTMLInputElement. Вы, вероятно, хотели его значение, которое находится на его value.

  3. Вызов document.write После того, как страница будет заполнена, будет неявно звонить document.open, который вытирает страницу и заменяет ее тем, что вы пишете.

Так respuesta может выглядеть примерно так вместо этого:

function respuesta(){ 

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

Side Примечание: Я вижу, вы кладете script тег в разделе head. Вы найдете много людей, которые это делают, и расскажут вам об этом, но это анти-шаблон. Если у вас нет конкретной причины делать что-то еще, поставьте теги script в самом конце body, перед закрытием тега </body>. Подробнее в YUI's guidelines.

+0

Большое вам спасибо! Проблема заключалась в отсутствии декларации и что я отсутствовал .value в getElementById. –