2017-08-01 35 views
1

有没有人知道如何在点击复选框时解决重复问题?使用输入字段自定义文本

<label><input type="checkbox" data-bValue="100" data-sValue="sV1" data-nValue="nV1" name="layers"> 100</label><label><input type="checkbox" data-bValue="200" data-sValue="sV2" data-nValue="nV2" name="layers"> 200</label><label><input type="checkbox" data-bValue="300" data-sValue="sV3" data-nValue="nV3" name="layers"> 300</label><label><input type="checkbox" data-bValue="400" data-sValue="sV4" data-nValue="nV4" name="layers"> 400</label><label><input type="checkbox" data-bValue="500" data-sValue="sV5" data-nValue="nV5" name="layers"> 500</label><label><input type="checkbox" data-bValue="600" data-sValue="sV6" data-nValue="nV6" name="layers"> 600</label><label><input type="checkbox" data-bValue="700" data-sValue="sV7" data-nValue="nV7" name="layers"> 700</label><h1 id="render"></h1> 

我的搜索让我相信我必须重新做到这一切,但我想我先问这里。

小提琴:https://jsfiddle.net/swedoc/Lwr16wrt/

$(document).ready(function() { 

    var scents = []; 
    var notes = []; 
    var theRender = document.getElementById("render"); 

    $("input[name='layers']").on('click', function(){ 

       $.each($("input[name='layers']:checked"), function(){    
        scents.push($(this).attr("data-sValue")); 
       });   

       $.each($("input[name='layers']:checked"), function(){    
        notes.push($(this).attr("data-nValue")); 
       }); 

        theRender.innerHTML 
        += "You’ve created a<br>" 
        + scents.join(', ').replace(/,(?!.*,)/gmi, ' and') + " sValue with " 
        + notes.join(', ').replace(/,(?!.*,)/gmi, ' and') + " nValue.";       
    }); 
}); 
+0

对不起,我不明白你正在尝试做的。我检查了你fiddleJs。而他们不止是一件令人不安的事情。那么你究竟看到了什么问题? – JBO

+0

对不起,我的坏。如果您选中复选框,它会保留更多的值,但不会删除以前的值。所以,它只是一次又一次地叠加值。我希望它从“theRender.innerHTML”更新文本 – swedoc

+0

@JBO感谢您的回复,但我想我通过添加theRender.innerHTML =''来解决它。到$(“input [name ='layers']”)的内部,它现在似乎工作:)我想它只是需要一个默认值的参考 – swedoc

回答

0

答案是所有有关的变量的作用域。你需要在你的函数内声明你的数组,而不是在外面。

也从您的innerHTML +=删除“+”。

$("input[name='layers']").on('click', function(){ 
    var scents = []; 
    var notes = []; 

    $.each($("input[name='layers']:checked"), function(){    
     scents.push($(this).attr("data-sValue")); 
    });   

    $.each($("input[name='layers']:checked"), function(){    
     notes.push($(this).attr("data-nValue")); 
    }); 

    theRender.innerHTML = "You’ve created a<br>" 
     + scents.join(', ').replace(/,(?!.*,)/gmi, ' and') + " sValue with " 
     + notes.join(', ').replace(/,(?!.*,)/gmi, ' and') + " nValue.";       
}); 

这里是你的fiddleJs更正:https://jsfiddle.net/Lwr16wrt/23/

+0

你走了! :) – swedoc