从开放代码我有这一行
var average = parseFloat($(this).attr('id').split('_')[0]),
它获取div id的第一部分,以'_'作为分隔符。问题是id不能以数字开头(命名违规约定)。所以我要在我的php脚本中在id值之前添加一个字母。如何将substr(1)插入此var以删除此字母并按预期获得“平均值”?
答案 0 :(得分:2)
假设您正在讨论id的这种格式:
<div id="A1000_bc"></div>
您可以像这样插入substr(1)
:
var average = parseFloat(this.id.split('_')[0].substr(1));
我可能更喜欢这样做,所以它对确切的格式不那么自以为是,只抓取第一个浮点数字序列:
var average = parseFloat(this.id.match(/[\d\.\+\-]+/)[0]);
另外,请注意我是如何删除jQuery的。 $(this).attr("id")
的执行情况比this.id
差很多,并且没有任何优势。只有在jQuery实际上比普通JS更好时才应该使用jQuery。
这两种方法都假设您只使用格式正确的ID来呈现代码。如果你想在id格式不正确的情况下处理默认条件,那么你需要多行代码和一些if
条件来检查有效性,并在无效时提供默认结果。
这两个选项都在这里工作:http://jsfiddle.net/jfriend00/B4Rga/
顺便提一下,如果你在这里控制HTML,那么放置这样的数据比在id中更好。我建议使用自定义数据属性(HTML5标准,但无处不在)。
<div id="whatever" data-avg="3.5"></div>
然后,你可以得到这样的数据,而不必解析它:
var average = parseFloat(this.getAttribute("data-avg"));
答案 1 :(得分:-3)
var average = parseFloat(
$(this) // you've got a jQuery object here - bad place
.attr('id') // you've got a string here - why not
.split('_') // you've got an array here - bad idea
[0] // you've got a string here - why not
// you need to have a number string here
);
记住:substr(1)
只能在字符串上调用。