2011-11-13 146 views
2

我正在試圖包裝我的腳本placeholderRX。我需要做的就是從該調用返回的字符串末尾獲取'px'。試圖修剪'字符串'字符串?

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

返回「6px」。我想修剪掉6個像素,並確保它是一個整數,然後我可以添加2個像素,並將其饋送到CSS規則。我是JavaScript中的字符串操作的新手。幫幫我!

+6

'parseInt函數( '6像素') - > 6 //整數;' –

+1

看一看http://stackoverflow.com/問題/ 590602 /填充或邊距值的像素作爲整數使用jQuery的/ 590618#590618。 – mjwills

+0

parseInt('6。5px') - > 6 // a PROBLEM; –

回答

10

您可以使用基本的javascript替換(),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」。


以下是使用parse 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變量,因爲它們具有不同的屬性。沒有理由使用$ padding,因爲.css()不會返回一個jQuery對象,而只是一個簡單的字符串。

此外,對於更復雜的搜索,您可以研究正則表達式。

+1

考慮到細節的數量,這是一個很好的答案;不過,我建議將簡潔的parseInt版本移到頂端。 –

+0

非常好!非常感謝您破解這些功能!很有幫助。在我的變量中添加$是習慣於使用其他語言:/他們看起來更適合我,我能夠更快地區分它們,但我正在努力打破這種習慣。 – Throttlehead

+0

而parseInt絕對是我正在尋找的。腳本的功能是從表單輸入字段獲取屬性。然後使用抓取的屬性創建一個新的span元素,以將佔位符文本覆蓋在輸入元素上。 Theres然後幾個功能,顯然使這個跨度像一個正常的佔位符,隱藏和顯示它等。我這樣編程,因爲我希望用戶儘可能多地控制其輸入樣式,並且仍然允許腳本輕鬆地運行。 – 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