2012-04-28 5 views
0

Я пытаюсь сделать так, чтобы, когда пользователь нажимает на навигационное меню, заголовок изменяется на этот заголовок и изменяется основной контент. Я бы предпочел не использовать фреймы для этого.getElementById ('___'). InnerHTML Уничтожает идентификатор элемента?

$('op').click(function(){ 
    document.getElementById('title').innerHTML=this.innerHTML + ((this.innerHTML.indexOf("'s")==this.innerHTML.length-2) ? " " : "'s ") + this.parentNode.id + " | Le Lepids"; 
    document.getElementById('content').innerHTML=document.getElementById(this.innerHTML + '_' + this.parentNode.id).innerHTML; 
}); 
// If the code looks ugly and you can't read it, just tell me. 

Что происходит, однако, название меняется идеально каждый раз, но содержимое изменяется только один раз.

Например, он будет работать нормально в первый раз, а затем не работать в другое время после этого.

Почему это так? Уничтожает ли он идентификатор? Однако я не использую outterHTML. И если доза, почему название меняется хорошо?

EDIT: Хорошо, поэтому я думаю, что исправил его несколькими строками PHP. Но я все еще удивляюсь, почему это не сработает на моем сайте, а то, что Mia DiLorenzo произвело, прекрасно работает ... код точно такой же, как и имена переменных.

+2

без вашей структуры HTML, мы действительно можем помочь –

+1

Код очень нечитаемый. Требуется довольно много времени, чтобы расшифровать то, что вы пытаетесь сделать. И без вашего HTML и описания того, что он должен делать, мы не можем сказать вам, почему он не работает так, как вы ожидаете, или предлагаете что-то лучше. Если вы покажете нам HTML, я уверен, что мы можем сделать это намного, намного, намного лучше, чем это. – jfriend00

+0

Вы обновляете имена переменных одинаково? У них есть отношения, например, когда я написал 'div id =" container "', я должен написать 'container' ниже (change_, modify_, alter_container) –

ответ

0

Я не знаю точно, что вы хотите, но я все равно http://jsfiddle.net/69FDT/1/

написал что-то я изменил $('op') к $('p') и добавлены некоторые дивы, чтобы соответствовать вашей линии Javascript, что изменения content. Вы имели в виду что-то еще?

<div id="container"> 
    <div>Click on these words</div> 
     <p>change</p> 
     <p>modify</p> 
     <p>alter</p> 
    <br> 
     <div id='title'>Title</div> 
     <div id='content'>content</div> 
<br> 
     <div id="change_container">change placeholder div</div> 
     <div id="modify_container">modify placeholder div</div> 
     <div id="alter_container">alter placeholder div</div> 
    </div>​ 
+0

Это именно то, что я собирался сделать. Тем не менее, он по-прежнему не работает на моей странице. – TootsieRoller

+0

Объясните. Какая у вас ошибка? Я помогу, насколько смогу. –

0

Это еще не полный ответ (для этого нам нужен ваш HTML), но я думаю, что эта информация находится на шаге ответа и не может быть передана в комментарии.

В псевдо-коде (чтобы сделать его более понятным), это то, что делает ваш код:

Для #content пункта:

  1. Получить innerHTML из нажал на op элемента.
  2. Добавить '_' в это innerHTML.
  3. Добавить parentNode.id нажми на элемент op.
  4. С этим изготовленным идентификатором, сделайте document.getElementById(), чтобы найти объект.
  5. Получите innerHTML этого объекта и поместите этот innerHTML в элемент #content.

Для #title пункта:

  1. Получить innerHTML из нажал на op элемента.
  2. Если этот HTML-код заканчивается "'s", добавьте " " на внутреннийHTML, в противном случае добавьте "'s".
  3. Добавьте parentNode.id в это.
  4. Добавить " | Le Lepids" на это.
  5. Установите для этого результата внутреннийHTML объекта #title.

Я могу назвать несколько причин, почему #content элемент всегда может получить набор к тому же пункту или почему она может работать только иногда, но мы должны были бы увидеть ваши фактические HTML, чтобы знать наверняка что происходит, когда и Зачем.

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