2011-12-01 27 views
0

我有這樣一個div:獲取jQuery的格式化值

<td id="length" data-length=<?php echo $length;?> > 

而且我想在一個jQuery腳本讓我的PHP變量($長度)的值。

之後,我不得不格式化它以替換點的逗號。

在這個片段:

var $length   = jQuery(this).find("#length"); 
console.log($length.data('length')); 

我看到讀我的變量在控制檯

但是當我想格式化像這樣的一個點來代替逗號:

console.log(parseFloat($length.val().replace(",", "."))); 

我得到NaN

請幫助解決這個問題!

+0

爲什麼你使用'$ length.val()'即使你正確地提取用'$ length.data的數據(「樂ngth')'上面的行。 .val()應該用於表單元素。 –

回答

2

您錯過了數據長度值的引號。糾正你的HTML標記是這樣的:

<td id="length" data-length="<?php echo $length;?>" > 

接下來,你不想val()你想data('length')

console.log(parseFloat($length.data('length').replace(",", "."))); 
+0

這會返回一個錯誤: length.data(「length」)。replace不是一個函數! – Bizboss

+0

我的問題的來源是我在變量中有不同的類型:數字和字符串; 我已經解決了這樣的問題: 'var $ length = jQuery(this).find(「。length」)。data('length')。toString()。replace(「,」,「。」); ' 感謝所有:) – Bizboss

1

你在<td>,而不是使用.data().val()

// Here you're using .data() 
console.log($length.data('length')); 

// Here you're using .val() which is wrong. 
console.log(parseFloat($length.val().replace(",", "."))); 
+0

什麼是正確的代碼使用? – Bizboss

+0

@Bizboss:那麼如果'.data('length')'爲你工作,並切換到'.val()'導致它不工作... – RightSaidFred

+0

@Bizboss:哦,我從另一個評論看到你在頁面上重複使用ID。這是無效的。我想我可能已經猜到當你有'jQuery(this).find(「#length」);''而不是'jQuery(「#length」);''。要像你一樣重用,你需要使用'class =「length'作爲你的元素而不是'id =」length「'。至於如何選擇合適的,取決於你的標記,但試試'var $ length = jQuery(this).find(「。length」);'切換到類後 – RightSaidFred

1

如果您$length變量在PHP值將包含一個逗號輸出,你必須做的第一件事是正確的標記:

<td id="length" data-length="<?php echo $length;?>" > 

您需要的報價,所以結果看起來像這個瀏覽器:

<td id="length" data-length="1,23" > 

然後:

var $length   = jQuery(this).find("#length"); 
console.log(parseFloat($length.data("length").replace(",", "."))); 

...應該給你日誌中的「1.23」(給出我上面的示例值)。


也許值得注意的是:我會避免使用id值「length」。這太常見了,不幸的是id命名空間與各種東西混淆,特別是在IE上。我會去尋找更獨特的東西。

+0

我得到以下錯誤: length.data(「length」)。replace不是函數 – Bizboss

+0

看看標記瀏覽器,這個問題應該很容易發現,基本上,它的工作原理如下:http://jsbin.com/ilaqiq –

+0

例如,你是否絕對確信在頁面上只有* 1 *元素具有'id'「長度「?請記住'id's **必須**在頁面上是唯一的。 –

0

您的代碼是不完全正確,你想取代含td#length元素的jQuery對象逗號,試試這個:

var length = $("#length").data("length"); 
console.log(parseFloat(length.replace(",","."); 

而且,你的HTML應該包括周圍的值引號每個屬性,像這樣:

<td id="length" data-length="<?php echo $length;?>"> 
0

console.log(parseFloat($length.attr("data-length").replace(",", ".")));