如何按顺序向各种按钮添加功能

时间:2016-07-01 15:15:07

标签: javascript css

我有几个div标签,其中包含 opt 类,其中包含输入和按钮元素。我正在尝试创建一个将从输入标记中获取值的函数,当您单击该按钮时,将弹出下一个输入和按钮字段并要求您输入不同的信息,而之前的输入和按钮标记将隐藏自身。但是,此功能不起作用的是jsfiddle

HTML

<div id="container">


    <div class="opt active">  <input type="text"  placeholder ="Enter Name"name="name"> <button>OK</button>
    </div>

    <div class="opt">  
      <input type="text"  placeholder ="Enter Age" name="age"> <button>OK</button>
    </div>

    <div class="opt">  
      <input type="text"  placeholder ="Enter Race" name="race"> <button>OK</button>
    </div>

    <div class="opt">  
      <input type="text"  placeholder ="Enter Sex" name="sex"> <button id="done">Done</button>
    </div>


  </div>

的Javascript

function init(){

  var opt = document.getElementsByClassName('opt');

    var num = 0;
    var prop = [];
    var propVal = [];


  for (var i = 0 ; i < opt.length; i++)
  {
    opt[i].querySelector('input').value = "";
  }



   opt[num].querySelector('button').onclick = function()
  {
     prop[num] = opt[num].querySelector('input').name;
     propVal[num]= opt[num].querySelector('input').value;

    opt[num].className = "opt";
    opt[num+1].className ="opt active"; 
    console.log(prop +" "+ propVal);
     num++;
  };//button function






}


init();

1 个答案:

答案 0 :(得分:1)

您还需要在循环中绑定点击处理程序。当您可以使用对象时,也不需要使用并行数组来存储属性。

在尝试更改下一个类的类之前,请确保 是“下一个输入”。

var opt = document.getElementsByClassName('opt'),
    num = 0, prop = {};

function nextInput() {
  var input = opt[num].querySelector('input');
  prop[input.name] = input.value;
  console.log(prop);

  opt[num].className = "opt";
  if (num + 1 < opt.length) {
     opt[num + 1].className = "opt active";
     num++;
  } else {
     // submit?
  }
}

for (var i = 0; i < opt.length; i++) {
  opt[i].querySelector('input').value = "";
  opt[i].querySelector('button').onclick = nextInput;
}
.opt { display: none }
.opt.active { display: block }
<div id="container">
  <div class="opt active">
    <input type="text" placeholder="Enter Name" name="name">
    <button>OK</button>
  </div>
  <div class="opt">
    <input type="text" placeholder="Enter Age" name="age">
    <button>OK</button>
  </div>
  <div class="opt">
    <input type="text" placeholder="Enter Race" name="race">
    <button>OK</button>
  </div>
  <div class="opt">
    <input type="text" placeholder="Enter Sex" name="sex">
    <button id="done">Done</button>
  </div>
</div>