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

関連する問題