Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改时从表单生成JSON字符串以填充营业时间_Javascript_Html_Json_String - Fatal编程技术网

Javascript 更改时从表单生成JSON字符串以填充营业时间

Javascript 更改时从表单生成JSON字符串以填充营业时间,javascript,html,json,string,Javascript,Html,Json,String,我有以下html输入 <form id="test" role="form"> <input class="form-control" data-day="monday" type="time" name="open" value="12:00"> <input class="form-control" data-day="monday" type="time" name="close" value="20:00"> <!-- R

我有以下html输入

<form id="test" role="form">
    <input class="form-control" data-day="monday" type="time" name="open" value="12:00">
    <input class="form-control" data-day="monday" type="time" name="close" value="20:00">
    <!-- Rest of the weekdays -->
    <input class="form-control" data-day="sunday" type="time" name="open" value="12:00">
    <input class="form-control" data-day="sunday" type="time" name="close" value="23:00">
</form>

<pre id="output"></pre>

我尝试根据输入(更改时)生成JSON字符串。。 我的代码的问题是,当我周日更改时,它会更新(并且只更新)其他日子的所有值

如果前几天我做了一个改变,但什么都没发生,我有点明白为什么它失败了,但现在我已经开始拼命想了

函数到jsonString(表单){
var daysObj={}
var hoursObj={};
var elements=form.querySelectorAll(“输入[type='time']”);
对于(变量i=0;i

使用
输入
事件而不是
更改
,因为
更改
事件仅在输入失去焦点后发生<代码>输入
每次输入值更改时都会触发事件

form.addEventListener("input",function(){})
您每天也使用相同的小时对象。因此,每次迭代只需更改同一对象的
open
close
属性

您需要为
hoursObj
创建一个新对象,在设置
close

for (var i = 0; i < elements.length; ++i) {
  //previous code
  //...

  if(name=="close"){
     hoursObj = {};
  }
}
for(变量i=0;i
演示

函数到jsonString(表单){
var daysObj={}
var hoursObj={}
var elements=form.querySelectorAll(“输入[type='time']”);
对于(变量i=0;i


使用
输入
事件而不是
更改
,因为只有在输入失去焦点后才会发生
更改
事件<代码>输入
每次输入值更改时都会触发事件

form.addEventListener("input",function(){})
您每天也使用相同的小时对象。因此,每次迭代只需更改同一对象的
open
close
属性

您需要为
hoursObj
创建一个新对象,在设置
close

for (var i = 0; i < elements.length; ++i) {
  //previous code
  //...

  if(name=="close"){
     hoursObj = {};
  }
}
for(变量i=0;i
演示

函数到jsonString(表单){
var daysObj={}
var hoursObj={}
var elements=form.querySelectorAll(“输入[type='time']”);
对于(变量i=0;i


谢谢@t.niese让它成为一个片段!谢谢@t.niese让它成为一个片段!感谢您的整理和+1的输入提示!感谢您的整理和+1的输入提示!