为什么我的全局变量仍然未定义?

时间:2018-08-25 23:21:23

标签: javascript html

我在分配给全局变量的函数中有一个返回参数。但是,当我尝试在其他函数中使用它时,它不会仅仅返回undefined的任何值。我读了这个scope 知道如何使用全局变量,但这在我在示例之后所做的工作中反过来没有用。

var bookTitle = asksForBookTitle();

function asksForBookTitle() {
  var docBookTitle = document.getElementById('addbook-book-title');
  var valBoodTitle = docBookTitle.value;
  return valBoodTitle;
}

function getBookTitle() {
  alert(bookTitle);
}
<input id="addbook-book-title" type="text" name="Book Title" placeholder="Book Title">

<button id="btn-save" type="button" onclick="getBookTitle()"> Save </button>

2 个答案:

答案 0 :(得分:1)

因为要在用户输入任何数据之前分配给全局变量。这是固定版本:

var bookTitle;

function asksForBookTitle() {
  var docBookTitle = document.getElementById('addbook-book-title');
  var valBoodTitle = docBookTitle.value;
  return valBoodTitle;
}

function getBookTitle() {
  bookTitle = asksForBookTitle();
  alert(bookTitle);
}
<input id="addbook-book-title" type="text" name="Book Title" placeholder="Book Title">

<button id="btn-save" type="button" onclick="getBookTitle()"> Save </button>

您甚至不需要为此使用全局变量:

function getBookTitle() {
  var docBookTitle = document.getElementById('addbook-book-title');
  var valBoodTitle = docBookTitle.value;
  alert(valBoodTitle);
}
<input id="addbook-book-title" type="text" name="Book Title" placeholder="Book Title">

<button id="btn-save" type="button" onclick="getBookTitle()"> Save </button>

答案 1 :(得分:1)

您要在程序启动时以及用户有机会输入任何输入之前声明并分配bookTitle的值。当您将其记录在alert中时,就是在记录该值,而不是输入内部的值。