Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
4 / 4 / 0
Регистрация: 23.01.2013
Сообщений: 197
1

Подсчёт "A" в списке

11.08.2014, 13:37. Показов 1040. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите высчитать количество "a" в списке
сложность заключается в следующем - навели на "LI" и должно посчитаться сколько "A" в этой "LI""
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<ul>
    <li>
        <ul>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
        </ul>
    </li>
    <li></li>
    <li></li>
    <li>
        <ul>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
        </ul>
    </li>
    <li></li>
</ul>
я пробовал так
Javascript
1
2
3
4
$(".menu li.lvl1").hover(function(){
    var a = $(this).length;
    console.log(a);
})
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.08.2014, 13:37
Ответы с готовыми решениями:

Подсчёт фамилий в списке
В ТекстБокс1 есть список ФИО в котором их 9500: Задача такова: когда я нажимаю на Баттон1...

Подсчет элементов в списке
Подскажите пожалуйста как мне исправить, чтобы подсчитать количество вторых элементов кортежей и в...

Подсчет элемента в списке
Как реализовать функцию, которая считает сколько раз заданный элемент встречается в заданном списке.

Подсчет в двунаправленном списке
Предположим, что уже построен и задан указателем P двунаправленный список, элементами которого...

Подсчет строк в динамическом списке
Надо сделать как на картинке, даже часть кода есть, но не получается это реализовать в...

10
35 / 35 / 26
Регистрация: 27.05.2012
Сообщений: 204
11.08.2014, 13:57 2
Pro100kvachina, здесь тебе нужно посчитать количество тегов "A"(ссылок) или букв "А"?
0
4 / 4 / 0
Регистрация: 23.01.2013
Сообщений: 197
11.08.2014, 14:06  [ТС] 3
тегов "a"
0
Модератор
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
11.08.2014, 14:32 4
Лучший ответ Сообщение было отмечено Pro100kvachina как решение

Решение

Pro100kvachina, пойдем через рекурсию

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    var a = [];
    function getCountTag (parent) {
        var children = parent.children; // получаем всех детей
        for(var i=0;i < children.length;i++) {
            var child = children[i];
            if(child.tagName == "A") a.push(child);
            if(child.children.length > 0) getCountTag(child);
 
        }
    }
 
// обработчик всего этого
    document.onclick = function (e) {
        var trg = e.target;
        a = [];
        getCountTag(trg);
        alert(a.length);
    }
1
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,625
11.08.2014, 14:35 5
HTML5
1
onmouseover="console.log (this.getElementsByTagName ('A').length)"
1
4 / 4 / 0
Регистрация: 23.01.2013
Сообщений: 197
13.08.2014, 15:19  [ТС] 6
Цитата Сообщение от Thisman Посмотреть сообщение
var a = [];
* * function getCountTag (parent) {
* * * * var children = parent.children; // получаем всех детей
* * * * for(var i=0;i < children.length;i++) {
* * * * * * var child = children[i];
* * * * * * if(child.tagName == "A") a.push(child);
* * * * * * if(child.children.length > 0) getCountTag(child);
}
* * }
// обработчик всего этого
* * document.onclick = function (e) {
* * * * var trg = e.target;
* * * * a = [];
* * * * getCountTag(trg);
* * * * alert(a.length);
* * }
не совсем понял, как работает

Но мне нужно не при клики,а при наведение, навели на
HTML5
1
LI
и посчитались
HTML5
1
A
0
Модератор
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
13.08.2014, 15:28 7
Pro100kvachina, ну коли при наведении, то просто поменяй

Javascript
1
 document.onclick = function (e) {
на

Javascript
1
 document.onmouseover = function (e) {
// Алгоритм простой, сначала находим всех детей, элемента, на который на вели мышкой, считаем среди них все А, потом у каждого элемента среди детей проверяем его детей и так далее, до последней вложенности.
1
4 / 4 / 0
Регистрация: 23.01.2013
Сообщений: 197
14.08.2014, 15:15  [ТС] 8
пытаюсь написать условие - если в "LI" одна "A", то присваивать класс
Javascript
1
2
3
if(a < 1){
        $("li.lvl2:last-child a").addClass("yourClass");
    }
Но у меня не чего не происходит
Делаю так
Javascript
1
2
3
if(a < 1){
        $("li.lvl2 a").addClass("yourClass");
    }
работает
А мне нудно именно последней "A" добавлять класс или первой
0
Модератор
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
14.08.2014, 18:29 9
Pro100kvachina,
Цитата Сообщение от Pro100kvachina Посмотреть сообщение
$("li.lvl2 a")
тут именно массив ( коллекция ) JQuery будет, что бы добавить отдельному нужно:

Javascript
1
2
var i = $("li.lvl2 a").length -1 // последний элемент
$("li.lvl2 a")[i].addClass("yourClass");
1
4 / 4 / 0
Регистрация: 23.01.2013
Сообщений: 197
15.08.2014, 10:13  [ТС] 10
что то не получается
глянте http://emba.kz/
наведите на - Социальная ответственность, там одно подменю есть, мне нужно, если одна li в подменю, то давался класс(делаю это для того что бы сделать закругление, если один пункт в подменю)

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function menu_hover_a(){
    var a = [];
    function getCountTag (parent) {
        var children = parent.children;
        for(var i=0;i < children.length;i++) {
            var child = children[i];
            if(child.tagName == "A") a.push(child);
            if(child.children.length > 0) getCountTag(child); 
        }
    }
 
    document.onmouseover = function (e) {
        var trg = e.target;
        a = [];
        getCountTag(trg);
    }
}
$(".menu li.lvl1").hover(function(){
    menu_hover_a();
});
Может понадовится, дела. закругления так
CSS
1
2
3
4
5
6
.menu li.lvl2:nth-child(2) a.lvl2{
    border-radius:5px 5px 0 0;
}
.menu li.lvl2:last-child a.lvl2{
    border-radius:0 0 5px 5px;
}
Если есть лучше вариант, то подскажите

Добавлено через 35 минут
На работе, главный верстальщик подсказал как сделать без JS
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
.menu li.lvl2:first-child a.lvl2{
    -webkit-border-top-right-radius: 8px;
    -webkit-border-top-left-radius: 8px;
    -moz-border-radius-topright: 8px;
    -moz-border-radius-topleft: 8px;
    border-top-right-radius: 8px;
    border-top-left-radius: 8px;
}
.menu li.lvl2:last-child a.lvl2{
    -webkit-border-bottom-right-radius: 8px;
    -webkit-border-bottom-left-radius: 8px;
    -moz-border-radius-bottomright: 8px;
    -moz-border-radius-bottomleft: 8px;
    border-bottom-right-radius: 8px;
    border-bottom-left-radius: 8px;
}
Но на js всё ровно интересно как это сделать
0
Модератор
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
15.08.2014, 13:18 11
Pro100kvachina
Во первых : мы ведь считаем теги А, не теги списка.
Во вторых : удалите вторую строчку ( она не нужна ) , а 14 измените на:
Javascript
1
var a = [];
В третьих, у вас же в LI всегда будет один тег A, надо делать фильтрация по UL
1
15.08.2014, 13:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.08.2014, 13:18
Помогаю со студенческими работами здесь

Подсчёт повторений символов в списке
Имеем такое условие: Когда Антон прочитал «Войну и мир», ему стало интересно, сколько слов и в...

Подсчет каждого элемента в списке
Необходимо составить процедуру или функцию,которая для списка L подсчитывает, сколько раз...

Подсчет количества букв в списке
Помогите составить программу: Подсчитать количество букв «и» в списке, состоящем из пяти фамилий:...

Подсчет количество записей в списке
Доброго дня, форум. Данная тема уже была, но решения я так и не нашел. Помогите,прошу вас. Я все...

Подсчет атомов во всем списке
Добрый вечер, помогите пожалуйста решить задачу, кому не будет в тягость.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru