2017-08-19 90 views
1

我在附加文本框的值选择框选项当我们点击提交按钮时,它的工作正常,但是当这个值附加在选择框中它显示了一个更多的空白选项,我已经检查在检查内容中,为什么会发生,我们应该怎么做。到目前为止我还没有找到这个理由。一个空白选项自动附加在选择框中

我追加在选择框中选择文本框的值当我们点击提交按钮,它的工作正确的,但是当这个值在选择框追加它显示了一个更空的选项,我已经检查在检查元素,为什么它的发生,我们该怎么做。到目前为止我还没有找到这个理由。

$(function(){ 
 
    var x=[]; 
 
    
 
    $("#itemDone").click(function(){ 
 
     var y=$("#itemType").val(); 
 
     var z=$("#itemName").val(); 
 
     x.push(z); 
 
    
 
     for(i=1; i<x.length; i++){ 
 
      $("#itemType").append('<option value="x[i]">'+x[i]+'<option>'); 
 
      $("#itemplace1 ul").append('<li>'+x[i]+'</li>'); 
 
     } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> 
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous"> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
    
 
    <div class="row"> 
 
    
 
    
 
    <div class="col-md-3" style="background: #efefef;; height: 100vh;"> 
 
    <br /> 
 
    <div id="itemplace1"> 
 
    <ul></ul> 
 
    </div> 
 
    
 
    
 
    </div> 
 
    
 
    <div class="col-md-9" style="background: rgba(255, 165, 0, 0.25); height: 100vh;"> 
 
    <br /> 
 
    <input type="text" id="itemName" /> 
 
    <select id="itemType"> 
 
    
 
    </select> 
 
    <br /><br /> 
 
    <button id="itemDone">Submit</button> 
 
    </div> 
 
    
 
    </div>

+0

是否有原因让你重新显示整个x数组,而不仅仅是新值?此外,数组的起始索引0不是1. –

回答

1

这里是修复你的代码:

$(function(){ 
 
    var x=[]; 
 
    
 
    $("#itemDone").click(function(){ 
 
     var y=$("#itemType").val(); 
 
     var z=$("#itemName").val(); 
 
     x.push(z); 
 
     
 
     $("#itemType").children().remove(); 
 
     $("#itemplace1 ul").children().remove(); 
 
     
 
     for(i=0; i<x.length; i++) { 
 
      $("#itemType").append('<option value="x[i]">'+x[i]+'</option>'); 
 
      $("#itemplace1 ul").append('<li>'+x[i]+'</li>'); 
 
     } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> 
 
<div class="row"> 
 
    <div class="col-md-3" style="background: #efefef;; height: 100vh;"> 
 
     <br /> 
 
     <div id="itemplace1"> 
 
     <ul></ul> 
 
     </div> 
 
    </div> 
 

 
    <div class="col-md-9" style="background: rgba(255, 165, 0, 0.25); height: 100vh;"> 
 
     <br /> 
 
     <input type="text" id="itemName" /> 
 
     <select id="itemType"> 
 

 
     </select> 
 
     <br /> 
 
     <br /> 
 
     <button id="itemDone">Submit</button> 
 
     </div>  
 
</div>

  1. 干净一些的HTML代码(<br />元素应自闭) 。
  2. 清理每次点击中的#itemType#itemplace1 ul元素。
  3. <option>元素应该使用</option>关闭,而不是另一个<option>标记。
  4. for循环应该从0开始,而不是1
0

我认为错误的选项标签在最后,这是不是一个封闭的选择,而是一种新的开放之一,导致浏览器不好使的选择。

请尝试使用corret html标记,看看它是否解决。

+0

是的,这是原因,错误的选项标签感谢所有 –

+0

我可以再问一个关于循环的问题吗? –

相关问题