JavaScript-javascript 点击后修改ID

发布于 2016-11-09 16:31:09 字数 336 浏览 1276 评论 4

<li class="abc"><a href="#">aaaaaaa</a></li>
<li class="abc"><a href="#">aaaaaaa</a></li>
<li class="bbc"><a href="#">aaaaaaa</a></li>
<li class="abc"><a href="#">aaaaaaa</a></li>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

夜无邪 2017-09-28 14:00:37

楼上回答很不错了 推荐使用事件委托 给老大绑定一个时间 然后让他们冒泡 并且从现在js角度来看 不要对href绑定js函数

想挽留 2017-09-09 00:40:27

不知道你用不用jQuery之类的库, 用这些库会方便很多.

如果不用库的, 大概是这样的.

 <script>
function test()
{
this.parentNode.className = "BBC";//设置className各个浏览器行为可能不一致.
//这里的this就指向了<a>了
}
</script>
<li class="abc"><a href="javascript:test();">aaaaaaa</a></li>

归属感 2017-05-18 23:18:46

不用jquery类库的话,可以按照这样想。先获取所有的<a> 然后为<a>附加一个点击事件:把父亲的className改成bbs。获取元素可以有getElementById、getElementsByTagName等方法很灵活可以取到<a>。纤细代码如下:

 <html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Untitled Page</title>
</head>
<body>
<style type="text/css">
#h { width: 500px; height: 300px; }
#h ul { margin: 0; padding: 0; list-style: none; }
.abc { width: 50px; height: 20px; float: left; margin-left: 20px; font-size: 12px; line-height: 20px; border: 1px solid #00C; }
.abc a { text-decoration: none; }
.bbc { width: 50px; height: 20px; float: left; margin-left: 20px; font-size: 12px; line-height: 20px; border: 1px solid #00C; background: #FF0000; }
</style>
<div id="h">
<ul>
<li class="abc"><a href="javascript:void(0);">aaaaaaa</a></li>
<li class="abc"><a href="javascript:void(0);">aaaaaaa</a></li>
<li class="abc"><a href="javascript:void(0);">aaaaaaa</a></li>
<li class="abc"><a href="javascript:void(0);">aaaaaaa</a></li>
<li class="abc"><a href="javascript:void(0);">aaaaaaa</a></li>
<li class="abc"><a href="javascript:void(0);">aaaaaaa</a></li>
</ul>
</div>
<script>
var content = document.getElementById('h');//获取id为h的div
if (content) {
var links = content.getElementsByTagName('a');//获取h中所有的<a>
for (var i = 0; i < links.length; i++) {
links[i].onclick = function () {//依次为<a>附加点击事件
this.parentNode.className = 'bbc';
};
}
}
</script>
</body>
</html>

如果要更加方便的话:可以连js都省掉,只是两种附加click的方法,原理一样

 <html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Untitled Page</title>
</head>
<body>
<style type="text/css">
#h { width: 500px; height: 300px; }
#h ul { margin: 0; padding: 0; list-style: none; }
.abc { width: 50px; height: 20px; float: left; margin-left: 20px; font-size: 12px; line-height: 20px; border: 1px solid #00C; }
.abc a { text-decoration: none; }
.bbc { width: 50px; height: 20px; float: left; margin-left: 20px; font-size: 12px; line-height: 20px; border: 1px solid #00C; background: #FF0000; }
</style>
<div id="h">
<ul>
<li class="abc"><a href="javascript:void(0);" onclick="this.parentNode.className='bbc';">aaaaaaa</a></li>
<li class="abc"><a href="javascript:void(0);" onclick="this.parentNode.className='bbc';">aaaaaaa</a></li>
<li class="abc"><a href="javascript:void(0);" onclick="this.parentNode.className='bbc';">aaaaaaa</a></li>
<li class="abc"><a href="javascript:void(0);" onclick="this.parentNode.className='bbc';">aaaaaaa</a></li>
<li class="abc"><a href="javascript:void(0);" onclick="this.parentNode.className='bbc';">aaaaaaa</a></li>
<li class="abc"><a href="javascript:void(0);" onclick="this.parentNode.className='bbc';">aaaaaaa</a></li>
</ul>
</div>
</body>
</html>

想挽留 2016-12-07 14:17:56

从性能优化角度来说
如果元素是重复的结构,可利用事件冒泡机制

 //ulId为ul的id
document.getElementById('ulId').onclick = function(e){
//获取触发点击的元素
var event = e || window.event,
target = event.srcElement || event.target;
//修改li的class
target.parentElement.className = 'BBC';
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文