0

我正在处理表单,并且正在使用 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/ 谢谢!

4

3 回答 3

1

因为小提琴设置为运行 onload 所以该功能在全局范围内不可用。要么改变它在头部或身体上运行

在此处输入图像描述

或以非显眼的方式附加事件处理程序。

document.getElementsByTagName("button")[0].onclick = construct;
于 2013-11-08T14:44:33.967 回答
0

您需要将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>
于 2013-11-08T14:44:25.000 回答
0

construct是在另一个函数中定义的,因此它不是全局的,并且不能被内部事件属性访问。

不要使用内在事件属性,将事件处理程序与 JS 绑定。

document.querySelector('input[type="button"]').addEventListener('click', construct);

如:http: //jsfiddle.net/4DJ4e/3/

于 2013-11-08T14:44:52.863 回答