0

我正在尝试从 LI 中的每个 html LI 中获取一个数字,其中包含如下 html 代码所示的链接:

<div id="summary">
        <ul class="nobullets last-child">
           <li><a href="#">Blog Posts</a> (9)</li>
           <li><a href="#">Photos</a> </li>
           <li><a href="#">Discussion</a> (10)</li>
       </ul>
</div>

正如您所看到的,每个 LI 内的一些链接旁边都有数字,我只想获取那些有数字(博客文章)的链接,然后将该数字存储到一个变量中,如果它们没有数字,它只会放一个 0进入变量。

但这是我的 jquery 代码:

var getblog;
var getphoto;
      //blogs
      if($('#summary').find('ul li:first-child').contents().get(1).nodeValue != 'undefined'){
        getblog = $('#summary').find('ul li:first-child').contents().get(1).nodeValue;
        getblog = parseFloat( getblog.substr(2) );

      }
      else{
        getblog = '0';
      }


      //photos
      //+ li to get the second child
      if($('#summary').find('ul li:first-child + li').contents().get(1).nodeValue != 'undefined'){

        getphoto = $('#summary').find('ul li:first-child + li').contents().get(1).nodeValue;
        getphoto = parseFloat( getphoto.substr(2) );
      }
      else{
         getphoto = '0';
      }

firebug 向我抛出一个错误: TypeError: $("#summary").next().find("ul li:first-child + li").contents().get(1) is undefined

这是 jsfiddle http://jsfiddle.net/hP3Wq/

博客显示 9 有效,但照片显示 NaN 而不是 0

4

1 回答 1

0

我不确定你的代码都试图完成什么,但如果它只是匹配例如可能明显的前缀(3),你可以使用如下:http: //jsfiddle.net/hP3Wq/2/.text().match()

$(document).ready(function(){
    // use a generic function so as not to repeat things
    var getNumber = function(index) {
        return ($("#summary li")  // from the lis
                .eq(index)        // a specific li from the lis
                .contents()       // its contents
                .last()           // number is apparent in the last text node
                .text()           // its text
                // match it against a regexp defining "(somenumbers)";
                // in case of no match, use a dummy array with zeroes
                // (this defines the fallback)
                .match(/\((\d*)\)/) || [0, 0]
               )[1];
    };
    var getblog = getNumber(0);
    var getphoto = getNumber(1);

    $('#summary').after(getblog + '<br>' + getphoto);
});
于 2012-07-20T15:37:30.337 回答