Изменение пункта, нажав на список

0

Поэтому я вчера задал этот вопрос !:

Я просто изучаю html, css, javascript, и я застрял на одном месте. У меня есть веб-страница, разработанная css.

Как нажимать на элемент списка, чтобы изменить PARAGRAPH только, но не css, спроектированный (см. Рисунок)

Изображение 174551

список находится в:

<div id="bodyleft">
<h2>History</h2>
<li><a href="#">1996-2000</a></li>
the paragraph is:

<div id="bodyright">
<h2>blah blah blah blah blah blah </h2>
<p> blah blah blah....  </p> and I want thange THIS!!

У меня есть полезный ответ:

var ul = document.querySelector('#bodyleft ul');
ul.onclick = function(e){
    var evt = e || window.event;
    var target = evt.target || evt.srcElement;
    var p = document.querySelector('#bodyright p');
    p.innerHTML = 'Clicked on ' + target.innerHTML;
    return false;
};

Но каждый элемент <li> делает то же самое. Как я могу отделить их, как: нажмите на <li>Item1</li> ->Write1 Нажмите на <li>Item2</li> ->Write2 на <li>Item3</li> ->Write3??

Благодарю!

http://jsfiddle.net/NwFXE/

ОК, ЧТО Я ХОЧУ: => http://jsfiddle.net/NwFXE/5/

Спасибо за помощь!

Теги:

3 ответа

1
Лучший ответ

Как насчет этого решения:

<head>
    <script type="text/javascript">
        function changeMe(id){
            var test = document.getElementById('main')
            if (id == 'item1') {
                test.innerHTML = 'item1 clicked';
            }
            else if (id == 'item1') {
                test.innerHTML = 'item1 clicked';
            }
            else if (id == 'item2') {
                test.innerHTML = 'item2 clicked';
            }
            else if (id == 'item3') {
                test.innerHTML = 'item3 clicked';
            }
            else if (id == 'item4') {
                test.innerHTML = 'item4 clicked';
            }
            else if (id == 'item5') {
                test.innerHTML = 'item5 clicked';
            }       
        }
    </script>
</head>
<body>
<div id="bodyleft">
<h2>History</h2>
<li id="item1" onclick="changeMe('item1');"><a href="#">Item1</a></li>
<li id="item2" onclick="changeMe('item2');"><a href="#">Item2</a></li>
<li id="item3" onclick="changeMe('item3');"><a href="#">Item3</a></li>
<li id="item4" onclick="changeMe('item4');"><a href="#">Item4</a></li>
<li id="item5" onclick="changeMe('item5');"><a href="#">Item5</a></li>

the paragraph is:

<div id="bodyright">
<h2>blah blah blah blah blah blah </h2>
<p id="main"> this will change  </p> 
and I want thange THIS!!

</body>
0

Это происходит потому, что вы нацелены на UL.

Вместо этого измените его на LI, как показано ниже:

var li = document.querySelector('#bodyleft ul li');
    li.onclick = function(e){
    var evt = e || window.event;
    var target = evt.target || evt.srcElement;
    var p = document.querySelector('#bodyright p');
    p.innerHTML = 'Clicked on ' + target.innerHTML;
    return false;
};
  • 0
    Я пробовал это, но в этом случае работает только первый элемент списка, другие ничего не делают.
  • 0
    @PeterBarta - Вы должны сделать jsfiddle, повторяющий проблему.
Показать ещё 2 комментария
0

document.querySelector возвращает первое совпадение в списке, поэтому ul li возвращает первый li. Только нацелитесь на ul, и вы должны быть в порядке:

var li = document.querySelector('#bodyleft ul');

Демо: http://jsfiddle.net/tymeJV/NwFXE/4/

  • 0
    И как я могу это сделать, нажимая на элементы списка, писать разные тексты? Потому что в этом случае каждый элемент <li> пишет одинаково
  • 0
    Не для меня ... каждый элемент отображает правильный текст ... работает Chrome - @PeterBarta
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню