关于函数参数调用问题,求教

<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $("button").click(function(){
    $('p').addClass(function(n){
      return 'par_' + n;
    });
  });
});
</script>
<style type="text/css">
.par_0
{
color:blue;
}
.par_1
{
color:red;
}
</style>
</head>

<body>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
<button>向 p 元素添加类</button>
</body>
</html>

明明没有传入n,为什么n会自动为0 和1呢,两个p标签的颜色也被改了。

猫的第九尾
浏览 1182回答 2
2回答

闹小志

我也是第一次见过这样的,木有传参数,于是进行了一些猜想:1、在调试中给return 'par_' + n;这句打了断点,并且在这句之前输出了n,最后结果是0,1,且p标签按序加上了class2、我把要后加上的class名称从par_0,par_1,改成了par_2,par_3, 结果是p标签均没有变化。总结:也就是说,你的par_0和par_1只是恰好和p标签的索引相同而已,即,第0个p标签和第1个p标签,所以改成3和4的时候就没有反应了。以上是我的猜想,为了证明猜想,去w3c上看了看,果然addClass方法中时可以写成函数形式的:$(selector).addClass(function(index,oldclass))index代表的是函数的索引,oldclass是之前的类名,两个参数均为可选,可写可不写,你的问题中就是只写了一个参数,按照顺序,这个参数是索引,所以实际上你没有给传参数,可是它自己已经得到了哦~

echo_kinchao

你试试给N 初始化看看
打开App,查看更多内容
随时随地看视频慕课网APP