gpt4 book ai didi

javascript - 使用 JavaScript 更改

转载 作者:太空宇宙 更新时间:2023-11-04 14:49:00 24 4
gpt4 key购买 nike

我正在尝试使用 onclick() 事件更改某些标签的类。基本前提是让每个标签的背景图像在用户点击它们时发生变化,有点刺激“菜单选择”。

这是我的代码:

<style type="text/css">

.navCSS0
{
background-image:url('news_selected.png');
width:222px;
height:38px;
}

.navCSS1
{
width:222px;
height:38px;
}

.container_news
{
background-image:url('itsupdates.png');
height:330px;
width:965px;
}

.container_left
{
margin-top:90px;
margin-left:20px;
float:left;
height:auto;
width:auto;
}

</style>
</header>

<script>
//global arrays to store nav positions, menu options, and the info text
var navid_array = new Array();
navid_array[0] = 'nav1';
navid_array[1] = 'nav2';
navid_array[2] = 'nav3';
navid_array[3] = 'nav4';
navid_array[4] = 'nav5';


//Takes the navid selected, and goes into a loop where the background of the selected menu item is changed to a image
//with rounded corners, while the backgrounds of the other menu items are changed back to light grey or stay the same.
//There is also a call to the change_info() function when the selected menu item has been located.
function nav_color_swap(navid)
{
for(var i = 0; i < navid_array.length; i++) {
if(navid == navid_array[i])
{
document.getElementById(navid).className = "navCSS0";
}
else
{
document.getElementById(navid).className = "navCSS1";
}
}
}

</script>

<body>
<div class="container_news">
<div class="container_left">
<div class="navCSS1" id="nav1" onclick="nav_color_swap(this.id)"><a href="#" onclick="nav_color_swap(this.id)">Blah 1</a></div>
<div class="navCSS1" id="nav2" onclick="nav_color_swap(this.id)"><a href="#" onclick="nav_color_swap(this.id)">Blah 2</a></div>
<div class="navCSS0" id="nav3" onclick="nav_color_swap(this.id)"><a href="#" onclick="nav_color_swap(this.id)">Blah 3</a></div>
<div class="navCSS1" id="nav4" onclick="nav_color_swap(this.id)"><a href="#" onclick="nav_color_swap(this.id)">Blah 4</a></div>
<div class="navCSS1" id="nav5" onclick="nav_color_swap(this.id)"><a href="#" onclick="nav_color_swap(this.id)">Blah 5</a></div>
</div>
</div>
</body>
</html>

问题是,当我运行这段代码时,什么也没有发生……唯一真正改变的是最后一个菜单项(“Blah 5”)……有什么想法吗?

最佳答案

  • header标签现在确实存在,但那是你放置页面标题的地方,比如导航。对于标题和元标记,请使用 head标签。
  • <html> 的唯一合法子女是 <head><body> .示例代码有一个 <script> <html> 的子元素
  • nav_color_swap为 navid 设置类名,而不是 navid_array[i] , 当 navid != navid_array[i] .这可能是您问题的根源。
  • 修复后,<a> 的点击处理程序会将所有元素的类名设置为“navCSS1”,因为<a>没有 ID 属性。

因为每次点击最多需要更改两个元素类,所以我建议跟踪当前元素而不是遍历所有元素:

    <style type="text/css">
.selected {
background-image:url('news_selected.png');
}
.news, .news li {
padding: 0;
margin: 0;
list-style-type: none;
}
...
</style>
<script type="text/javascript">
function createNavSelector(curr_nav, selectedClass, unselectedClass) {
return function (nav) {
curr_nav.className = unselectedClass;
curr_nav = nav;
curr_nav.className = selectedClass;
}
}
</script>
</head>
<body>
...
<div class="container_news">
<ul class="news">
<li id="nav1" onclick="nav_select(this)">Blah 1</li>
<li id="nav2" onclick="nav_select(this)">Blah 2</li>
<li id="nav3" class="selected" onclick="nav_select(this)">Blah 3</li>
<li id="nav4" onclick="nav_select(this)">Blah 4</li>
<li id="nav5" onclick="nav_select(this)">Blah 5</li>
</ul>
</div>
<script type="text/javascript">
var nav_select = createNavSelector(document.getElementById('nav3'), 'selected', '');

#nav*看起来是新闻元素列表或导航元素列表,我转而使用元素,因为它们携带的语义信息比 <div> 多。秒。在这一点上,div-vs-ol/ul 主要是个人喜好问题。

我还重命名了函数和元素类以反射(reflect)它们的目的,而不是它们如何实现该目的。这样,您无需更改名称即可更改他们的行为。

你用过<a>吗?支持老版本的IE?我不会担心任何早于 IE 6 的事情.


根据不退款不返回的评论,这里有一些链接可以帮助您开始使用 Firebug 调试 JS . Safari 也有一个很好的调试器,如果这是您选择的浏览器的话。

关于javascript - 使用 JavaScript 更改 <div> 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1949660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com