无法对从div中检索到的字符串进行切片

时间:2014-11-11 20:51:10

标签: javascript jquery string slice

我在使用javascript / jquery从div检索的文本切片时遇到问题。我以为你可以切片每个字符串,并且.text()函数总是返回一个字符串,所以我没有看到问题。任何帮助将不胜感激!

Fiddle

HTML:

<body>
<div class="vaknaam">Div 1 :<span class="totaal">55%</span>

</div>
<div class="vaknaam">Div 2 :<span class="totaal">60%</span>

</div>
<div class="vaknaam">Div 3 :<span class="totaal">64%</span>

</div>
<div class="vaknaam">Div 4 :<span class="totaal">76%</span>

</div>
<div class="vaknaam">Div 5 :<span class="totaal">63%</span>

</div>
</body>

使用Javascript:

$(function () {
var divs = {};
var tempString, vakken = {};
$('.vaknaam').each(function (key, value) {
  tempString = $(value).contents().filter(function () {
      return this.nodeType == 3;
  }).text();
  tempString = tempString.slice(0, - 2);
  vakken[tempString] = $(value).children('span').text();
 });

for (var property in vakken) {
  $('body').append("<p>" + property + "</p>");
}
});

2 个答案:

答案 0 :(得分:3)

slice不会修改初始字符串,这是不可变的。尝试:

tempString = tempString.slice(0, - 2);

答案 1 :(得分:3)

你有几个错误。

  1. 您需要声明var vakken
  2. 的初始化
  3. slice方法不会修改字符串,因此您应该指定返回的内容。
  4. property var只是一个索引,因此您需要询问vakken[property]
  5. 您的代码应如下所示:

    $(function () {
      var divs = {};
      var tempString, vakken = {}; //1
      $('.vaknaam').each(function (key, value) {
          tempString = $(value).contents().filter(function () {
              return this.nodeType == 3;
          }).text();
          tempString = tempString.slice(0, -4); //2
          vakken[tempString] = $(value).children('span').text();
      });
    
      for (var property in vakken) {
          $('body').append("<p>" + property + "</p>"); //3
      }
    });
    

    查看此codepen