0

我正在努力做到这一点,以便当用户单击导航菜单时,标题会更改为该标题,并且主要内容也会更改。我宁愿尝试避免为此使用框架。

$('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.

但是,发生的情况是标题每次都会完美更改,但内容只会更改一次。

例如,它第一次可以正常工作,然后在以后的任何其他时间都不能正常工作。

为什么会这样?它会破坏 id 的“内容”吗?我没有使用outterHTML。如果是剂量,为什么标题会变好?


编辑:好的,所以我想我用几行 PHP 修复了它。但我仍然想知道为什么它不能在我的网站上工作,而 Mia DiLorenzo 所做的工作非常好......除了变量名之外,代码完全相同。

4

2 回答 2

0

这还不是一个完整的答案(我们需要你的 HTML),但我认为这个信息是在回答的步骤上,它不能在评论中传达。

在伪代码中(使其更易于理解),这就是您的代码正在执行的操作:

对于#content项目:

  1. 获取被点击op元素的 innerHTML。
  2. 添加'_'到该innerHTML。
  3. op添加被点击元素的 parentNode.id 。
  4. 使用该制造的 id,document.getElementById()对其进行查找以查找对象。
  5. 获取该对象的 innerHTML 并将该 innerHTML 放入#content项目中。

对于#title项目:

  1. 获取被点击op元素的 innerHTML。
  2. 如果该 HTML 以 结尾"'s",则添加" "到 innerHTML,否则添加"'s".
  3. 将 parentNode.id 添加到上面。
  4. 再加" | Le Lepids"上。
  5. #title项目的 innerHTML 设置为该结果。

我可以想到为什么该#content项目可能总是被设置为同一个项目或为什么它有时只能工作的几个原因,但我们必须查看您的实际 HTML 才能确定何时或为什么会发生什么。

于 2012-04-28T01:54:44.403 回答
0

我不确定你到底想要什么,但我还是写了一些东西http://jsfiddle.net/69FDT/1/

我更改$('op')$('p')并添加了一些 div 以匹配您更改的 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>​
于 2012-04-28T02:03:22.467 回答