Я возился с формами, и я работал с JSfiddle, и я не мог заставить страницу вернуть предупреждение.
Вот мой HTML:
<form>
<input type="text" id="first"></input>
<input type="text" id="last"></input>
<input type="button" value="Submit" onClick="construct()"></input>
</form>
Вот мой JavaScript:
function construct() {
var firstName = document.getElementById("first").value;
var lastName = document.getElementById("last").value;
alert("Welcome to the party " + firstName + " " + lastName + "!");
}
И я не могу сказать, почему он не возвращает значение. Любая помощь приветствуется! О, и вот скрипка: http://jsfiddle.net/nickpalmer789/4DJ4e/1/ Спасибо!
Поскольку скрипт настроен для запуска onload, поэтому функция недоступна в глобальной области. Либо замените его на голову, либо на тело
или присоединить обработчик событий не навязчивым способом.
document.getElementsByTagName("button")[0].onclick = construct;
Вам нужно изменить onload
(вверху слева), чтобы no wrap - in <head>
. Вы вмешиваетесь в область видимости, поэтому construct()
не объявляется в глобальной области (которую ищет атрибут onclick
).
В противном случае объявите его как window.construct = function(){... }
В стороне, вы действительно должны держать разметку и javascript разделенными. то есть не использовать атрибуты on*
для элементов, а вместо этого связывать их с javascript. Что-то вроде:
<!-- give n ID to the button -->
<input type="submit" value="Submit" id="submit-btn" />
<script>
// grab the button (using the ID)
var submitBtn = document.getElementById('submit-btn');
// attach en event handler for click
submitBtn.addEventListener('click', function(){
// construct() code goes here
});
</script>
onLoad
, onDomReady
, no wrap - in <head>
onDomReady
no wrap - in <head>
просто помещает его непосредственно в <head>
документа, а no wrap - in <body>
местах no wrap - in <body>
внутри <body>
.
construct
определяется внутри другой функции, поэтому она не является глобальной и недоступна для внутренних атрибутов событий.
Не используйте внутренние атрибуты событий, привяжите обработчики событий к JS.
document.querySelector('input[type="button"]').addEventListener('click', construct);
Такие: http://jsfiddle.net/4DJ4e/3/