我如何才能将数组作为输入值插入到HTML输入字段中?

时间:2018-11-04 00:58:58

标签: javascript html html-form

我整天都在忙。

HTML代码            

    <label>Input values</label>
    <input type="text" id="arrays" placeholder="Enter Array" >
    <button id="objectify" type= "button">Click</button>

    <div id="results"></div>

JavaScript

var input= document.getElementById('arrays').value; //["book", 3, "pin", 4];//
var btn = document.getElementById('objectify');
var output = document.getElementById('results');


function objectifyArr(x) {
    var myObject = {
        String: [],
        Number: []
    };

    for (var i = 0; i < x.length; i++) {
        if (typeof x[i] === 'string' || x[i] instanceof String){
            myObject.String.push(x[i]); 
        } else if (typeof x[i] === 'number' || x[i] instanceof Number){
            myObject.Number.push(x[i]);
        }
    }
    return myObject;
}
btn.onclick = function () {
    output.textContent = JSON.stringify(objectifyArr(inputValue));

}

当我为'inputValue'分配一系列数组值时,该代码似乎起作用,但是当我通过getElementbyId.value获取数组时,该代码无效。是否有专门用于数组的输入类型,或者我为变量分配了错误的值?

无论错误是什么,只要有人为我指出错误,我都会很高兴。

2 个答案:

答案 0 :(得分:0)

您的第一个问题是您在JS文件的顶部声明了这一点:

var input= document.getElementById('arrays').value

这实际上是在说“将元素的当前值分配给我的 input 变量”。显然,脚本开头的输入元素为空,因此值为''

此后,另一个问题是,由于您的输入仅接受 text ,因此其中的所有字符均为String类型,因此循环并检查typeof每个字符始终将其产生为String。 一种解决方法是使用RegExp

Here's a working JSFiddle

答案 1 :(得分:0)

只使用JSON.parse()并等待获得value的{​​{1}}直到您真正单击按钮,怎么样?

也(FYI),input要求您要么嵌套作为其标签的元素,要么添加label属性并为其赋予{{1} }是for的“ for”元素。

id
label