0

等しく$('.item:last').attr('id').split('-')[1]ない場合、等しい場合は等しいundefined var liidundefinednull

4

7 に答える 7

3
var liid = $('.item:last').attr('id').split('-')[1] || null;

この JavaScript では、論理和 ( ||) 演算子は、慣れ親しんだものとは異なる働きをします。 ||それが「真実」である場合、その左のオペランドを返します。true-y 値は次のいずれかです。

  • オブジェクト
  • 任意の数 != 0
  • true
  • 空でない文字列
于 2010-07-12T19:54:59.307 に答える
2
var parts= $('.item').last().attr('id').split('-');
var liid= parts.length>=1? parts[1] : null;
  • 最新のブラウザーでは、高速なブラウザー組み込みメソッドの代わりに、比較的低速な「Sizzle」セレクター エンジンが使用されるため、可能な場合は回避:lastし、その他の jQuery 固有の非標準セレクターを使用してください。querySelectorAll優先的に、代わりに jQuery ナビゲーション関数を使用してください。

  • 前の回答のように使用|| nullして短い表現を取得できますが、これには影響する場合としない場合がある注意事項があります。個人的には、私が行っているテストについて明確にすることを好みます。

    特に、空の文字列も 'falsy' になるため、たまたま がのnull場合に値が返されます。ida--b

あなたの質問が「JavaScript」でこれを書く方法である場合、つまり. jQueryなし:

var els= document.getElementsByClassName('item');
var parts= els[els.length-1].id.split('-');
...

ただし、これは HTML5getElementsByClassNameメソッドを使用しており、まだすべてのブラウザーがサポートしているわけではないため、そのためのフォールバック サポートを追加する必要があります (この件に関する以前の質問を参照してください)。

于 2010-07-12T20:04:55.360 に答える
2

.item:last が定義されていると仮定します。

var liid = typeof $('.item:last').attr('id').split('-')[1] != undefined ? $('.item:last').attr('id').split('-')[1] : null;

それ以外は:

var liid = $('.item:last').length > 0 ? $('.item:last').attr('id').split('-')[1] : null;
于 2010-07-12T19:30:17.797 に答える
1

マイケル・ムロゼックは正しいです。ルックアップ全体を 2 回実行したくないでしょう。

やるだけ

var liid = (typeof($('.item:last').attr('id').split('-')[1]);
liid = typeof(liid) == 'undefined' ? null : liid;

または if ステートメントを実行します。

于 2010-07-12T19:37:40.093 に答える
1

var value = $('.item:last').attr('id').split('-')1;
(value == undefined) ? liid = value : liid = null;

The operator is called a ternary conditional operator, or, sometimes referred to as the ternary operator. Info on undefined, null, etc. is here.

Also, I stored $('.item:last').attr('id').split('-')1 in a variable so that the next time I wanted to get that value, the machine wouldn't have to recalculate it by calling multiple functions; a simple read from memory would be enough.

于 2010-07-12T19:50:43.573 に答える
0
var liid=$('.item:last').attr('id').split('-')[1];
liid?'':liid=null;

ただし、これは $('.item:last').attr('id').split('-')[1] when not undefined が false に等しい値以外の何かに等しい場合にのみ機能します0または空の文字列'';

于 2010-07-12T19:42:22.777 に答える
0

式の後ろに追加|| nullして、デフォルト値として使用します。

var liid = $('.item:last').attr('id').split('-')[1] || null
于 2010-07-12T19:55:28.830 に答える