0

開いているコードから私はこの行を持っています

var average = parseFloat($(this).attr('id').split('_')[0]),

'_'を区切り文字として持つdividの最初の部分を取得します。問題は、IDを数字で始めることができないことです(命名違反規則)。したがって、phpスクリプトのid値の前に文字を追加します。この文字を削除して期待どおりに「平均」を取得するには、この変数にsubstr(1)を挿入するにはどうすればよいですか?

4

2 に答える 2

2

IDのこの形式について話していると仮定します。

<div id="A1000_bc"></div>

substr(1)次のように挿入できます。

var average = parseFloat(this.id.split('_')[0].substr(1));

私はこのようにすることを好むかもしれません。そうすれば、正確な形式について少し推測が少なくなり、最初の浮動小数点の数値シーケンスを取得するだけです。

var average = parseFloat(this.id.match(/[\d\.\+\-]+/)[0]);

また、jQueryを削除した方法にも注目してください。 $(this).attr("id")ここでは、パフォーマンスが大幅に低下this.idし、利点はありません。jQueryは、プレーンJSよりも実際に優れている場合にのみ使用する必要があります。

これらの方法はどちらも、適切にフォーマットされたIDでのみコードを提示することを前提としています。IDが正しい形式でない場合にデフォルトの条件を処理する場合は、if有効性を確認し、無効な場合にデフォルトの結果を提供するために、いくつかの条件を含む複数行のコードが必要になります。

どちらのオプションもここで機能します:http://jsfiddle.net/jfriend00/B4Rga/

ちなみに、ここでHTMLを制御する場合は、IDよりもこのようなデータを配置する方が適切です。カスタムデータ属性をお勧めします(HTML5標準ですが、どこでも機能します)。

<div id="whatever" data-avg="3.5"></div>

次に、解析せずに次のようなデータを取得できます。

var average = parseFloat(this.getAttribute("data-avg"));
于 2012-04-12T01:41:01.070 に答える
-3
var average = parseFloat(
        $(this)     // you've got a jQuery object here - bad place
        .attr('id') // you've got a string here - why not
        .split('_') // you've got an array here - bad idea
        [0]         // you've got a string here - why not
        // you need to have a number string here 
    );

Remeber:文字列substr(1)でのみ呼び出すことができます。

于 2012-04-12T01:42:09.967 に答える