点击<a >的时候用js改变<a data-service-index="2" href=' '></a>中data-service-index的值??

鼠标点击<a >链接的时候,怎么用js改变<a data-service-index="2" href=' '></a>中data-service-index的值??
错误问题

第1个回答  2015-02-04
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<a id ="link" data-service-index="0" href='javascript:void(0);'>中data-service-index</a>
<script type="text/javascript">
var i = 0;
document.getElementById("link").onclick = function(){
this.dataset['serviceIndex'] = (++i);
//this.setAttribute("data-service-index",++i);
//以上两种方式,如果支持html自定义 data的浏览器可以使用第一种。其它可以使用第二种。
}
</script>
</body>
</html>本回答被网友采纳
第2个回答  2015-02-03

可以用jq改么?

$(this).attr('data-service-index',4),这样就可以了。


js是:

<a href="javascript:;" data-service-index="1" onclick="javascript:this.setAttribute('data-service-index',3)">测试</a>

追问

我的这是点击一个还要改变一个input的值,是不是要写一个涵数封装起来,要怎么调用呢??

追答

嗯,是的
比如这样
function change(o){
o.setAttribute('')//这里是改变属性值

document.getElementById('input').value="xxxxx";//这里改变input的值。

}
onclick = “change(this)”这样就行了。

追问

要是点击一个,改变的是另一个的data-service-index值能实现吗?

追答

一样的啊,就是把this换成另一个a( document.getElementById('id') )就行了

追问

还有问题,我要改变的< a >是在循环里面的,不能用ID阿。

改成这样怎么写呢:点击一个<a >后改变<ul>里面所有a的data-service-index值

追答

不知道你用不用jq。。用jq的话更简单一点。
不用jq的话。js这么写

var dom = document.getElementById('c1').getElementsByTagName('a');//获取c1里面的a标签的集合。
for(var i=0;i<dom.length;i++){
dom[i].setAttribute();//这里获取每一个a,改变其属性。

}

追问

我是这么写的,不起作用阿。function change(){
var dom = document.getElementById('c1').getElementsByTagName('a');
for(var i=0;i

追答

我测试了,是可以的。

<script>
function change(){
var dom = document.getElementById('aTag').getElementsByTagName('a')
for(var i = 0;i<dom.length;i++){
dom[i].setAttribute('index',i);
}
}
</script>
<div id="aTag">
<a href="javascript:;">123123</a>
<a href="javascript:;">123123</a>
<a href="javascript:;">123123</a>
<a href="javascript:;">123123</a>
<a href="javascript:;">123123</a>
<a href="javascript:;">123123</a>
<a href="javascript:;">123123</a>
</div>
<a href="javascript:;" id="change" onclick="change()">change</a>

这样是改变a的index属性。。



你写的这边,dom[i].setAttribute('c700'),改变属性c700,但是没有赋值啊。。

相当于<a c700=""></a>,是会报错的。。

setAttribute(属性名称,属性值),缺一不可。

追问

我发现了,但是没有实现我想要的效果阿。我在给你加点分,你帮我改改看,导航收缩效果。要改成:默认是全部展开的,点击后收缩,再点击后又展开,下这个文件:

或加我秋

追答

下载哪一个??

本回答被提问者采纳
第3个回答  2015-02-03
$(document).on("click", "a", function(){
$(this).attr('data-service-index', '你想改变的值');
alert($(this).attr('data-service-index'));
});追问

要是点击一个,改变的是另一个的data-service-index值能实现吗?

追答

可以的
$(document).on("click", "a", function(){
$(this).attr('data-service-index', '你想改变的值');
alert($(this).attr('data-service-index'));
});

将上面的$(this)换成你想要改变的元素,就行了(class选择器,id选择器)

第4个回答  2015-02-05
<!DOCTYPE HTML>
<html>
<head>
<meta charset=UTF-8>
<title>YuGiOh</title>
<style type="text/css">
</style>
<script type="text/javascript">
function change ()
    {
    var dom = c1.querySelectorAll ("a");
    for ( var i = 0; i < dom.length; i++)
        {
        dom[i].onclick = function ()
        {
         txt.value = this.getAttribute ("data-service-index")
         this.setAttribute("data-service-index", 5);
        }
        }
    }

onload = change;
</script>
</head>
<body>
<div id="c1">
<a data-service-index="1" href='#'>aaaaaaaaaaa</a>
<a data-service-index="2" href='#'>bbbbbbbbb</a>
<a data-service-index="3" href='#'>cccccccccccc</a>
<a data-service-index="4" href='#'>ddddddddddd</a>
<a data-service-index="5" href='#'>eeeeeeeee</a>
<a data-service-index="6" href='#'>ffffffffff</a>
</div>
<input type="text" id="txt" />
</body>
</html>

相似回答