2011-11-13 6 views
2

私はスクリプトのプレースホルダーRXをまとめようとしています。私がする必要があるのは、この呼び出しから返された文字列の最後から 'px'を取り除くことだけです。文字列から 'px'をトリミングしようとしていますか?

$(form).children('.inputSpan').each(function() { 
    var $input = $(this) 
    var $padding = $input.children('.input').css('padding-left'); 
}); 

"6px"を返します。私は6 pxをトリミングして、それが整数であることを確認して、2ピクセルを追加してCSSルールに入力することができます。私はJavaScriptの文字列操作に新しいです。私を助けてください!

+6

'のparseInt( '計6Px') - > 6 //整数;' –

+1

はhttp://stackoverflow.com/を見てください質問/ 590602 /パディングまたはマージン - ピクセル値 - 整数使用のjquery/590618#590618。 – mjwills

+0

parseInt( '6。5px ') - > 6 //問題。 –

答えて

10

基本的なjavascript replace()、parseInt()、またはparseFloat()関数を使用して、結果から「px」を削除できます。どちらの方法を使うかは、正確に何が必要かによって決まります。

次は、parse replace()を使用して "px"を削除したコードの短縮版です。

$(form).children('.inputSpan').each(function() { 
    var padding = $(this).children('.input').css('padding-left').replace("px", ""); 
}); 

上記のコードでは、「16px」は「16」を返します。 「16.7px」は「16.7px」を返します。 "16em"は "16em"を返します。


以下は、parse parseInt()を使用して "px"などを削除するコードの短縮版です。

$(form).children('.inputSpan').each(function() { 
    var padding = parseInt($(this).children('.input').css('padding-left')); 
}); 

上記のコードでは、「16px」は「16」を返します。 「16.7px」は「16」を返します。 "16em"は "16"を返します。最初のreplace()の例とは対照的に、これは "px"だけでなくすべてのテキストを削除します。


以下は、parseDouble()を使用して "px"などを削除するコードの短縮版です。

$(form).children('.inputSpan').each(function() { 
    var padding = parseDouble($(this).children('.input').css('padding-left')); 
}); 

上記のコードでは、「16px」は「16」を返します。 「16.7px」は「16.7」を返します。 "16em"は "16"を返します。 parseInt()とは対照的に、これは何らかの理由で小数点以下を保持します。もちろん


、あなたは今後の参考のために撮影した解体の手順を参照するには理由がある場合、長いコードを維持することができ、または他の変数は、他の理由のために使用されている場合。これは、parseInt()を使用した長いバージョンです。

$(form).children('.inputSpan').each(function() { 
    var $input = $(this) 
    var padding = $input.children('.input').css('padding-left'); 
    var paddingInt = parseInt(padding); 
}); 

また、$ paddingからpaddingへの変数名の変更について説明します。 javascript変数の前にある$記号は、通常のjavascript変数とjQuery変数を区別するための一般的な使い方です。 .css()はjQueryオブジェクトを返すのではなく、単純な文字列を返すので、$ paddingを使用する理由はありません。

さらに、より複雑な検索のために、正規表現を調べることができます。

+1

詳細の量を考えると、これは良い答えです。しかし、私は簡潔なparseIntバージョンをトップに移動することをお勧めします。 –

+0

優秀!これらの機能の概要をありがとうございました!非常に役立ちます。私の変数に$を追加することは、他の言語で働くことの習慣です。/彼らは私にとってより適切に見え、私はそれらをより速く区別することができますが、私はこの習慣を破ることに取り組んでいます。 – Throttlehead

+0

そしてparseIntは私が探しているものです。スクリプトが行うことは、フォーム入力フィールドからプロパティを取得することです。グラブされたプロパティを使用して新しいspan要素を作成し、入力要素にプレースホルダテキストをオーバーレイします。次に、このスパンを明らかに通常のプレースホルダのように動作させるいくつかの機能を隠して表示します。ユーザができるだけ入力スタイリングを十分にコントロールし、スクリプトが簡単に機能できるようにしたいので、私はこのようにプログラミングしました。 – Throttlehead

0
$(form).children('.inputSpan').each(function() { 
    var $input = $(this) 
    var $padding = $input.children('.input').css('padding-left'); 

    $padding = $padding.substring(0, $padding.Length - 2); 
}); 
3
function size(value){ 
    return(parseInt(value.replace('px','') ,10)); 
} 

このような関数を使用します。

​​
+1

コードの 'value.replace(...)'セクションはまったく必要ありません。単純な 'parseInt()'呼び出しを使用すると、末尾の非整数トークンが削除されます。 – Nightfirecat

+0

@Nightfirecat私はちょうど安全でありたいです –

+0

文字列が '3px2'のようなものを読んでいない限り、違いはありません。全く必要ありません。 – Nightfirecat

関連する問題