2015-01-04 2 views
0

Существует строка, следующая "100200300400500". Я пытаюсь разбить его на подмножества 3, такие как «100» «200» «300» «400» «500». Я хочу, чтобы они как заголовок/подсказка дочерних элементов в последовательности. То есть, когда вы наведите указатель мыши на первого ребенка, всплывающая подсказка должна сказать 100, а когда вы наведите курсор мыши над вторым ребенком, всплывающая подсказка должна сказать 200 и так далее. Здесь результат = 100200300400500 и str = подстроки длины 3 строки результатаПочему не работает цикл?

Ниже приведено то, что я достиг. Но всплывающие подсказки на всех дочерних divs читаются 100. Что я делаю неправильно?

 $.ajax({ 
     url: "https://dl.dropboxusercontent.com/u/47127613/ajax.txt", 
     dataType: "text", 
     success: function(result) { 
      var str = result; 
      if (str.length > 3) str = str.substring(0, 3); { 
       for (var n = 1; n < 100; n++) { 
        $("#parent:nth-child(n)").children().attr('title', str + ' Installs'); 
        for (var i = 0; i < 100; i++) { 
         str(i) = str(i + 3); 
        } 
       } 
      } 
     } 
    }); 

HTML

<div id="parent"> 
    <div class="child1"></div> 
    <div class="child2"></div> 
    <div class="child3"></div> 
    <div class="child4"></div> 
    <div class="child5"></div> 
    </div> 
+0

Не могли бы вы опубликовать структуру HTML, а? –

+0

Несомненно. Отредактировал вопрос. –

+1

В вашем коде есть много ошибок. – tom10271

ответ

0

Значение n не интерпретируется как сво в строке. Ваш селектор должен выглядеть примерно так: $("#parent:nth-child(" + n + ")")

+0

Я пробовал, но это не работает. –

-1

Чтобы получить доступ к массиву ячеек, вы должны написать:

str[i]; //not str(i) 
0

Вы должны перебрать div элементов и присвоить атрибут title.

var str = '100200300400500'; 
 
// Initialize the counter 
 
var c = 0; 
 
// Loop through all 'div's that are direct child of '#parent' 
 
$('#parent > div').each(function() { 
 
    // Assign the 'title' attribute to the current 'div'($(this)). 
 
    // The 'str.substring(c, c + 3)' will extract a sub string from 
 
    // the current index(c) till 3 more indexes(c + 3). 
 
    $(this).attr('title', str.substring(c, c + 3) + ' Installs'); 
 
    // Increment the counter by 3. 
 
    c += 3; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="parent"> 
 
    <div class="child1">One</div> 
 
    <div class="child2">Two</div> 
 
    <div class="child3">Three</div> 
 
    <div class="child4">Four</div> 
 
    <div class="child5">Five</div> 
 
</div>

+0

Я пробовал оба селектора, но все всплывающие подсказки показывают первые три буквы строки. –

+0

Заботьтесь, чтобы объяснить, что не полезно, чтобы я мог улучшить? –

+0

Эй! Такие работы, но не для каждого ребенка, но оставляют один пробел. –

1

Вы можете попробовать расщепления с помощью этого фрагмента. Это то, что вам нужно?

var r = [], str = "100200300400500"; 
 
// you may want to check for appropriate str.length 
 
// if (str.length % 3 != 0) { ... } 
 
str.split('') 
 
    .map(function (v, i, arr) { 
 
     void(i && (i % 3 == 0 || i == arr.length-1) 
 
       ? this.push(
 
        i == arr.length -1 ? arr.slice(-3) 
 
             : arr.slice(i-3, i)) 
 
       : null); 
 
     return v; 
 
     }, r); 
 
document.querySelector('#result').innerHTML = 
 
    r.map(function (v) {return v.join('')}).join('<br>');
<div id="result"></div>

Смежные вопросы