javascript - Html 和 JavaScript : How to return user input

标签 javascript html arrays json

我有 3 个函数,当用户在消息框中输入他们的名字和姓氏时,它会返回 (a) 他们的名字以数组形式合并,(b) 他们的名字也以对象数组形式合并。 我的问题是,当我在 Google Chrome 中测试它时,按下“保存”按钮时什么也没有显示,但在 JSbin 中它只返回:

[object Object]

这是函数代码(useMerge.js):

var first_name  = [];
var last_name   = [];

var fInput  = document.getElementById("fname");
var lInput   = document.getElementById("lname");
var messageBox  = document.getElementById("display");

function insert ( ) {
 first_name.push( fInput.value );
 last_name.push( lInput.value );

 Show(); 
}

function Show () {
//clear messagebox
  fInput.value = "";
  lInput.value = "";

//show
  messageBox.innerHTML = "";

  messageBox.innerHTML = mergeHandler(first_name,last_name,merge2Single);
  messageBox.innerHTML = mergeHandler(first_name,last_name,merge2Object);
}

//merges 
function merge2Single(first, last){
    var arr=[];
    arr.push(first);
    arr.push(last);
    return arr.join(" ");
} 

function mergeHandler(arr1, arr2, func){
    var i=0;
    var size = arr1.length;
    var result=[];
    for(i=0; i<size; i++){
        result.push(func(arr1[i], arr2[i]));        
    }
    return result;
}

function merge2Object(first_name, last_name){
    var arr=[];
    arr.push({FirstName: first_name, 
          LastName: last_name});

    return arr;
}

HTML 代码:

<!DOCTYPE html>
<html>
<head>
<script src="useMerge.js" type="text/javascript"></script>
<meta charset=utf-8 />
<title>UI</title>

<style>
  article, aside, figure, footer, header, hgroup, 
  menu, nav, section { 
  display: block; 
}
</style>
</head>
<body>
  <form>
    <h1>Please enter data</h1>
    <input id="fname" type="text" placeholder="First Name" />
    <input id="lname" type="text" placeholder="Last Name" />
    <input type="button" value="Save" onclick="insert()" />
  </form>
  <div id="display"></div>
</body>
</html>

最佳答案

用户在函数内提交按钮后,您应该阅读文本框,如下所示:

var first_name  = [];
var last_name   = [];

var fInput;
var lInput;
var messageBox;

function insert ( ) {
  fInput  = document.getElementById("fname");
  lInput   = document.getElementById("lname");
  messageBox  = document.getElementById("display");
  first_name.push( fInput.value );
  last_name.push( lInput.value );

  Show(); 
}

function Show () {
 //clear messagebox
  fInput.value = "";
  lInput.value = "";

  //show
  messageBox.innerHTML = "";
  messageBox.innerHTML = mergeHandler(first_name,last_name,merge2Single);
  messageBox.innerHTML = mergeHandler(first_name,last_name,merge2Object);
}

//merges 
function merge2Single(first, last){
    var arr=[];
    arr.push(first);
    arr.push(last);
    return arr.join(" ");
} 

function mergeHandler(arr1, arr2, func){
    var i=0;
    var size = arr1.length;
    var result=[];
    for(i=0; i<size; i++){
        result.push(func(arr1[i], arr2[i]));        
    }
    return result;
}

function merge2Object(first_name, last_name){
    var arr=[];
    arr.push({FirstName: first_name, 
          LastName: last_name});

    return arr;
}

修复后,您将得到以下结果:

[object Object]

关于javascript - Html 和 JavaScript : How to return user input,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55073851/

相关文章:

java - 在java中找到一个集合的所有可能的组合

java - 如何将字符串转换为数组?

javascript - 插入数组后 Angular 清除对象

javascript - 如何从影子 DOM 访问 currentScript (v1)

javascript - 在knockoutjs上自动触发点击事件

javascript - 如何从谷歌地图获取纬度和经度?

html - 使表格垂直和水平对齐

html - 为什么这两个 div 宽度不等于 100%?

html - 如何在半桌面屏幕上制作全高视频?

sorting - 在 awk 中对关联数组进行排序