我整天都在忙。
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获取数组时,该代码无效。是否有专门用于数组的输入类型,或者我为变量分配了错误的值?
无论错误是什么,只要有人为我指出错误,我都会很高兴。
答案 0 :(得分:0)
您的第一个问题是您在JS文件的顶部声明了这一点:
var input= document.getElementById('arrays').value
这实际上是在说“将元素的当前值分配给我的 input 变量”。显然,脚本开头的输入元素为空,因此值为''
。
此后,另一个问题是,由于您的输入仅接受 text ,因此其中的所有字符均为String
类型,因此循环并检查typeof
每个字符始终将其产生为String
。
一种解决方法是使用RegExp。
答案 1 :(得分:0)
只使用JSON.parse()
并等待获得value
的{{1}}直到您真正单击按钮,怎么样?
也(FYI),input
要求您要么嵌套作为其标签的元素,要么添加label
属性并为其赋予{{1} }是for
的“ for”元素。
id
label