2016-05-05 6 views
1

こんにちは、私はJavaScriptのステッパー1より多くインクリメント/デクリメントする関数を書き直そうとしています。ここで私はここに javascriptのステッパーよりもインクリメント/デクリメントする機能があります

がcodepenリンクここ http://codepen.io/Ongomobile/pen/XdyBgv/

ステッパーの1である、これまでに試したものです

<div class="qtyDiv"> 
     <label class="qtyLabel" for="qty1 " name"one"><abbr title="Quantity">Qty</abbr></label> 
     <input class="qtyInput" id="qty1" value="0" name"one" />    
     <!-- <button class=" tallyBtn" id="down" onclick="modify_qty(-1)">-1</button> 
     <button class="tallyBtn"id="up" onclick="modify_qty(1)">+1</button> --> 
     <button class=" tallyBtn" id="down" onclick="stepperVal("one",-1)">-1</button> 
     <button class="tallyBtn"id="up" onclick="stepperVal("one",1)">+1</button> 
</div> 

// This is current one 
function modify_qty(val) { 
    var qty = document.querySelector("#qty1").value; 

    var new_qty = parseInt(qty,10) + val; 

    if (new_qty < 0) { 
    new_qty = 0; 
    } 

    document.querySelector("#qty1").value = new_qty; 

    return new_qty; 
} 

これを行う必要があり、私はそれを次

function stepperVal(name,val){ 
    var qty = 0; 
    var new_qty = parseInt(qty,10) + val; 

    if (new_qty < 0) { 
    new_qty = 0; 
    } 
    [name].value = new_qty; 
    return new_qty; 
} 
+0

あなたの質問は何ですか? –

+0

'document.querySelector("#qty1 ")'を '[name]'に置き換えると、作業に近づくのはなぜだと思いますか? –

+0

アンソニーありがとうございました申し訳ありませんが、私は正しくフォーマットしようとしていましたが、あなたは私にそれを打ち負かしました。 –

答えて

1

使用を試みたものです仕事:

function stepperVal(name,val){ 
var qty = 0; 
var new_qty = parseInt(document.getElementsByName(name),10) + val; 

    if (new_qty < 0) { 
    new_qty = 0; 
    } 
    document.getElementsByName(name).value = new_qty; 
return new_qty; 
} 
1

いくつかの問題:

  • このラインの目的は何ですかparseInt(qty,10) + val;parseIntは、文字列を同等の数字に変換するためのものです。 base10の番号でそれを呼び出すのはあまり意味がありません。
  • stepperValの名前引数のポイントがわかりません。値段がvalueで既に暗示されていますか?
  • onclickイベントをトリガするオブジェクトへの参照は、thisonclick内で宣言された関数に渡すことで渡すことができます。
  • new_qty常にval
  • stepperVal(arg,-1)に評価され、実際にstepperVal(arg,0)と同じです。なぜそれをそのように呼ぶのではないのですか?

更新されたコード

がでthisで "1" を置き換えます。

<div class="qtyDiv"> 
     <label class="qtyLabel" for="qty1 " name"one"><abbr title="Quantity">Qty</abbr></label> 
     <input class="qtyInput" id="qty1" value="0" name"one" />    
     <!-- <button class=" tallyBtn" id="down" onclick="modify_qty(-1)">-1</button> 
     <button class="tallyBtn"id="up" onclick="modify_qty(1)">+1</button> --> 
     <button class=" tallyBtn" id="down" onclick="stepperVal(this,-1)">-1</button> 
     <button class="tallyBtn"id="up" onclick="stepperVal(this,1)">+1</button> 
</div> 

簡体JS:

function stepperVal(event, val){  
    clicked_link = event.target 
    return clicked_link.value = Math.max(0, val); # Return the greater of 0 and `val` 
} 
+0

ありがとう@AnthonyEコンソールのestimate.jsでこのエラーが発生しました:38 Uncaught TypeError:Can not定義されていないプロパティ 'value'を –

+0

に設定すると、コードページのリンクhttp://codepen.io/Ongomobile/pen/XdyBgv/ –

関連する問題