通过JS改变HTML id
Changing HTML id via JS
我有一个由"hello world"组成的脚本,其中"hello"answers"world"是两种不同的CSS样式。
我想点击他们中的任何一个,他们会交换他们的风格。例如,我点击"hello",它会与"world"交换样式。以下是我的代码。
我不能让它交换。我该如何改正呢?
<html>
<head>
<style>
#today{
font-weight: bold;
color: red;
}
#normal{
font-weight: normal;
color: green;
}
</style>
<script>
old="old";
function set(in){
var e = document.getElementsByName(old);
for(ii=0;ii<e.length; ii++)
{
var obj = document.getElementsByName(old).item(ii);
obj.id="normal";
}
old=in;
var e = document.getElementsByName(old);
for(ii=0;ii<e.length; ii++)
{
var obj = document.getElementsByName(old).item(ii);
obj.id="today";
}
}
</script>
</head>
<body>
<table>
<tr>
<td id="normal" name="new" onclick="set('new')">Hello</td>
<td id="today" name="old" onclick="set('old')">World</td>
</tr>
</table>
</body>
</html>
在任何时候,只有一个元素可以用ID注释。因此,应该使用类而不是id来注释元素。此外,请确保包含doctype。
现场演示更正后的代码:
<!DOCTYPE html>
<html>
<head>
<style>
.today{
font-weight: bold;
color: red;
}
.normal{
font-weight: normal;
color: green;
}
</style>
<script>
document.addEventListener("DOMContentLoaded", function() {
var els = document.querySelectorAll('.normal,.today');
for (var i = 0;i < els.length;i++) {
els[i].addEventListener('click', function () {
var els = document.querySelectorAll('.normal,.today');
for (var i = 0;i < els.length;i++) {
var currentClass = els[i].getAttribute('class');
var newClass = currentClass == 'today' ? 'normal' : 'today';
els[i].setAttribute('class', newClass);
}
}, false);
}
}, false);
</script>
</head>
<body>
<table>
<tr>
<td class="normal">Hello</td>
<td class="today">World</td>
</tr>
</table>
</body>
</html>
当然,用jQuery编写更简单(demo):
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js">
</script>
<script>
$(function() {
$('.normal,.today').click(function() {
$('.normal,.today').each(function(i, el) {
var $el = $(el);
if ($el.hasClass('today')) {
$el.removeClass('today');
$el.addClass('normal');
} else {
$el.removeClass('normal');
$el.addClass('today');
}
});
});
});
</script>
这里有几个问题。首先,在你的onclick处理程序中,它必须是"javascript:set"而不仅仅是"set"。其次,您有一个名为"in"的参数,这是一个Javascript关键字。将它的所有引用更改为"inv"。如果你这样做了,你的代码就可以工作了。试试。
除此之外,我建议您在Firefox中工作,并获得Firebug插件,以便您可以打开控制台。它会显示这些类型的错误
相关文章:
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 一个正则表达式,用于从JS中的HTML标记中删除id、样式和类属性
- Html地图对象-点击地图获取id的一部分
- tu如何将id放在填充了json数据的html表td上
- 如何重写Javascript If语句以选择Classes而不是ID's的HTML格式
- ID为的HTML样式类
- jQuery值在html中作为id传递
- 获取 HTML 5 音频控制文件位置并在不使用 id 选择器的情况下更新 src
- 对javascript使用.html中的select id
- 如何筛选要写入新文档的HTML,删除JavaScript中的某些类和/或ID
- 我想使用Javascript中的循环在HTML中的特定id中显示数组中的多个对象
- 如何将value和id动态添加到html下拉选项标记中
- 如何使用 html 类或 id 在任何地方显示内容
- 在库(javascript/HTML)中将“name”替换为“id”
- 使用 PHP 从 HTML 表中获取 DATA-ID HTML
- 在数据响应中选择 #id.html
- 如何在特定InnerHTML上的类HTML元素上创建ID?HTML没有ID,使用JavaScript
- 我可以像这样发送html的值$("#id").html()给后面的代码吗?
- jquery $("#id").html(data)不能在firefox上工作,但可以在chrome
- 为什么我的 javascript 函数不交换编写的 pi id html 内容