2016-06-28 8 views
1

JavaScriptの計算機で作業していますが、HTMLの「データ」属性を使用してコードをリファクタリングしています。 (私はv1.0のように10個の関数ではなく、データ入力のために1つの関数を持ちたいと思っています)私の目標はjQueryを使ってデータ属性から整数を解析することですが、壁。ここでjQueryデータメソッドの戻り値は数値に変換されません

は、HTMLのボタンの行です:

<div class="row" id ="row3"> 
    <div data-number=“7” class="button number gray" id="seven">7 
    </div> 
    <div data-number=“8” class="button number gray" id="eight">8 
    </div> 
    <div data-number=“9” class="button number gray" id="nine">9 
    </div> 
    <div data-operand="*" class="button orange operand" id="multiply">&times; 
    </div> 
</div> 

はここでイベントトリガーです:

var pushNumber = function() { 
var num = $(this).data("number"); 
var parseNum = parseInt(num); 
console.log(parseNum); 
console.log(typeof num); 
} 

私は与えられたをクリックします。

$(".number").mouseup(pushNumber); 

そしてここでは、壊れた機能ですボタンの場合、console.log(parseNum)は "NaN"を返し、console.log(typeof num)は "文字列"を返します。 jQueryのドキュメントに基づいて、私は.dataがここに数値を返すべきだと考えます。だから、すべて言った...
1. .dataが文字列ではなく数値を返すようにするにはどうすればよいですか?
2. numでparseIntメソッドを使用できないのはなぜですか?

ここで完全なプロジェクトだ: https://codepen.io/halfalpine/pen/MeJwmV?editors=1010

は、私は私の能力を最大限に関連する何かを探してきましたが、私は短い作ってみました。このエントリが冗長であれば私の謝罪です!

+1

サイドノートでは、HTMLの見た目にぴったりな引用符を修正する必要があります。 Ex 'data-number =" 9 "'となります。実際、それは全体の問題かもしれません。 – j08691

+0

引用符に問題があると思いますが、実際の文字ではなく他の種類の文字です –

+0

コードを編集するためにワードプロセッサを使用しないでください。これらの間違いはありません – Barmar

答えて

2

問題は、あなたのファンシークォートです、あなたのコンソールを見て、それらの値を出力しています。

データ数=「8」

私はJoshBerkeの答えはあなたの実際の問題を "釘付け" と思い

データ数= "8"

+0

@Dirk、ちょうど追加する:ブラウザはこれらの文字を引用符で認識しないため、値の一部として扱われるため、コードペーンですべてを構成します。値は '7 'ではなく' '7''です。つまり、JQueryは自動的に値を整数に解析しないので、自分で解析しようとするとNaNを返します。 –

+0

あなたはそうです! –

1

であるべき。

しかし、私はあなたの機能を単純化しているので、私は答えを残します。

$(".number").on("mouseup", function(){ 
    var thisNumber = parseInt($(this).attr("data-number")); // Is an integrer here. 
    console.log(thisNumber); 
)}; 
+0

明らかに、.dataメソッドは自動的に数値に変換できるので、単にvar num = $(this).data( "number"); ' – Dirk

+0

として書くことができます。 t '.data()'メソッドを使用するには、[here](https://api.jquery.com/jquery.data/)をお読みください。これは、 'data-number'属性の値を取得するのとは異なります。 –

関連する問題