JS将substr(1)插入到var中

时间:2012-04-12 01:36:43

标签: javascript substr

从开放代码我有这一行

var average = parseFloat($(this).attr('id').split('_')[0]),

它获取div id的第一部分,以'_'作为分隔符。问题是id不能以数字开头(命名违规约定)。所以我要在我的php脚本中在id值之前添加一个字母。如何将substr(1)插入此var以删除此字母并按预期获得“平均值”?

2 个答案:

答案 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)只能在字符串上调用。