2017-08-01 30 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