1

我有一个表格,其中包含相应输入框的 ID 名称、标题和描述。但是,当我尝试在 HTML 中显示这些值时,我会收到“[object HTMLInputElement]”或“undefined”。

我在下面的代码块中得到“未定义” ,我在函数外部全局声明了变量名称、标题和描述以检索输入值。

var name;
var title;
var description;      
document.getElementById("name").onchange = function(){
      name = document.getElementById("name").value;
      };
document.getElementById("title").onchange = function(){
          title = document.getElementById("title").value;
      };
document.getElementById("description").onchange = functio){
          description = document.getElementById("description").value;
      };

var myhtml = '<p>' + name + '</p><p>' + title + '</p><p>' + description + '</p><p>';

但是,如果我改为在函数内声明变量(而不是“全局”?),我会得到[object HTMLInputElement] ,如下所示:

document.getElementById("name").onchange = function(){
      var name = document.getElementById("name").value;
      };

myHTML 是打印在 DOM 中的变量。

这里发生了什么?如果我有全局声明,我已经尝试将名称、标题和描述传递给函数。但这并没有解决问题(我仍然得到“[object HTMLInputElement]”)。

4

1 回答 1

3

“未定义”值是由于“onchange”事件在输入更改之前没有触发。这个 jsfiddle 说明了我的观点:http: //jsfiddle.net/gR8td/。请注意,在为输入元素键入值后,将显示全局变量的新值。我添加了以下函数来输出值:

function showInputs() {
    var myhtml = '<p>' + name + '</p><p>' + title + '</p><p>' + description + '</p>';
    var elem=document.getElementById('output');
    elem.innerHTML = myhtml;
}
于 2013-03-23T00:32:37.100 回答