等しく$('.item:last').attr('id').split('-')[1]
ない場合、等しい場合は等しいundefined
var liid
undefined
null
7 に答える
var liid = $('.item:last').attr('id').split('-')[1] || null;
この JavaScript では、論理和 ( ||
) 演算子は、慣れ親しんだものとは異なる働きをします。 ||
それが「真実」である場合、その左のオペランドを返します。true-y 値は次のいずれかです。
- オブジェクト
- 任意の数 != 0
true
- 空でない文字列
var parts= $('.item').last().attr('id').split('-');
var liid= parts.length>=1? parts[1] : null;
最新のブラウザーでは、高速なブラウザー組み込みメソッドの代わりに、比較的低速な「Sizzle」セレクター エンジンが使用されるため、可能な場合は回避
:last
し、その他の jQuery 固有の非標準セレクターを使用してください。querySelectorAll
優先的に、代わりに jQuery ナビゲーション関数を使用してください。前の回答のように使用
|| null
して短い表現を取得できますが、これには影響する場合としない場合がある注意事項があります。個人的には、私が行っているテストについて明確にすることを好みます。特に、空の文字列も 'falsy' になるため、たまたま がの
null
場合に値が返されます。id
a--b
あなたの質問が「JavaScript」でこれを書く方法である場合、つまり. jQueryなし:
var els= document.getElementsByClassName('item');
var parts= els[els.length-1].id.split('-');
...
ただし、これは HTML5getElementsByClassName
メソッドを使用しており、まだすべてのブラウザーがサポートしているわけではないため、そのためのフォールバック サポートを追加する必要があります (この件に関する以前の質問を参照してください)。
.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;
マイケル・ムロゼックは正しいです。ルックアップ全体を 2 回実行したくないでしょう。
やるだけ
var liid = (typeof($('.item:last').attr('id').split('-')[1]);
liid = typeof(liid) == 'undefined' ? null : liid;
または if ステートメントを実行します。
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.
var liid=$('.item:last').attr('id').split('-')[1];
liid?'':liid=null;
ただし、これは $('.item:last').attr('id').split('-')[1] when not undefined が false に等しい値以外の何かに等しい場合にのみ機能します0
または空の文字列''
;
式の後ろに追加|| null
して、デフォルト値として使用します。
var liid = $('.item:last').attr('id').split('-')[1] || null