2011-12-01 48 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(",", ".")));