1

我正在尝试设置一个页面,其中连续有几个标题,下面有一个描述性段落。当用户滚动标题时,段落将根据他们悬停的标题而改变。我希望每个标题都是不同的颜色,并且段落的字体颜色应该改变以匹配标题的颜色。我遇到的问题是让段落的颜色发生变化。

这是我的例子:

<script type="text/javascript">
function onover(caption)
{document.getElementById('text').innerHTML=caption;}
{document.getElementById('text2').innerHTML=caption;}
</script>

<a onmouseover="onover('Paragraph 1')" style="color:green">Title 1</a>
<a onmouseover="onover('Paragraph 2')" style="color:red">Title 2</a>
</br>
<div id="text" style="color:green">Paragraph 1</div>
<div id="text2" style="color:red"></div>
4

5 回答 5

1

更新由于OP想要替换文本,

<script type="text/javascript">
       function onover(caption,color) {
          document.getElementById('text').innerHTML=caption;
          document.getElementById('text').style.color=color;
          document.getElementById('text2').style.color=color;
   } 
</script>

<a onmouseover="onover('Paragraph 1','green')" style="color:green" id='one'>Title 1</a>
<a onmouseover="onover('Paragraph 2','red')" style="color:red">Title 2</a>
</br>
<div id="text" style="color:green">Paragraph 1</div>

演示

更新 2

于 2012-10-27T06:22:20.503 回答
0
<script type="text/javascript">
function onover(caption, objId, obj)
{
   document.getElementById(objId).innerHTML=caption;
   document.getElementById(objId).style.color = obj.style.color;
}
</script>

<a onmouseover="onover('Paragraph 1', 'text', this)" style="color:green">Title 1</a>
<a onmouseover="onover('Paragraph 2', 'text2', this)" style="color:red">Title 2</a>
</br>
<div id="text" style="color:green">Paragraph 1</div>
<div id="text2" style="color:red"></div>
于 2012-10-27T06:21:44.880 回答
0
document.getElementById('text2').style.color = 'blue';

会改变文本的颜色。

在单独的说明中, {document.getElementById('text2').innerHTML=caption;}它不是您的 onover 功能的一部分。

于 2012-10-27T06:23:49.217 回答
0

我强烈建议将风格、逻辑和内容分开。它使您的代码更易于阅读维护。一些建议:

  • 所有内联样式(例如 )都应替换为样式表
    • 在此示例中,这样做允许您为菜单项和段落重用相同的样式
  • 利用第三方 JavaScript 库(如 jQuery)来简化跨浏览器 javascript 实现不一致的处理
  • 以编程方式而不是内联方式附加事件
  • 不要试图单独处理每个案例;再抽象一点你的代码。没有必要创建多个 div 只是为了让样式匹配
  • 一般来说,最好将所有脚本内容放在页面末尾,就在结束正文标记之前。这将使您的内容在页面处理 javascript 时可见,并使网站看起来加载速度更快

以下是如何实施这些建议的示例:

<style>
  .red { color: red; }
  .green { color: green; }
</style>
<div id="TitleBar">
  <a data-text="Paragraph 1" class="green">Title 1</a>
  <a data-text="Paragraph 2" class="red">Title 2</a>
</div>
<div id="text"></div>
<script src="http://code.jquery.com/jquery-git.js"></script>
<script>
  $('#TitleBar').on('hover', 'a', function (e) {
    var $evTarg = $(e.target),
        $dest = $('#text');
    $dest.html($evTarg.data('text')).attr('class', $evTarg.attr('class'));
  });
</script>

​ 最后一条评论 - 如果“段落 x”文本超过几个单词,请考虑将文本存储在命名数组中,而不是将其嵌入源标签中。

于 2012-10-27T06:53:05.983 回答
0

你最好通过 CSS 来做到这一点。根本不需要编程。

于 2012-10-27T06:54:51.557 回答