JS判断是不是选中的是表格内当前选中的那一行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS判断是不是选中的是表格内当前选中的那一行相关的知识,希望对你有一定的参考价值。

现有一表格,里面有很多行,当我点击第三行的时候,怎样判断当前选中的是表格内的第三行?
大致的JS代码怎样写?

可以给tr添加onclick事件,然后,通过tr的DOM对象的rowIndex属性获取当前点击的行的索引,从而去判断你点击了那一行。

javascript实现的话麻烦点,代码如下:

<html>
  <head>
    <script language="javascript">
      function Window_Load()
        var t = document.getElementById("table1");
        var rows = t.getElementsByTagName("tr");
        
        //给tr绑定click事件
        for(var i in rows)
          rows[i].onclick = rowClick;
        
      
      function rowClick(e) 
        alert(this.rowIndex); //显示所点击的行的索引
      
    </script>
  </head>
  <body onload="Window_Load();">
  <table id="table1" border="1" cellpadding=0 cellspacing=0 >
       <tr>
         <td> t1</td>
         <td> t1</td>
      </tr> <tr>
         <td> t1</td>
         <td> t1</td>
      </tr> <tr>
         <td> t1</td>
         <td> t1</td>
      </tr>
    </table>
  </body>
</html>


用jQuery实现要简单一些,代码如下:

<html>
  <head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script language="javascript">
      $(document).ready(function() 
        $("#table1 > tbody > tr").click(function()
          alert(this.rowIndex); 
        ); 
      );
    </script>
  </head>
  <body >
    <table id="table1" border="1" cellpadding=0 cellspacing=0 >
      <tr>
        <td> t1</td>
        <td> t1</td>
     </tr> <tr>
        <td> t1</td>
        <td> t1</td>
     </tr> <tr>
        <td> t1</td>
        <td> t1</td>
     </tr>
    </table>
  </body>
</html>

参考技术A <table id="myid">
    <tr></tr>
    <tr></tr>
</table>

$('#myid>tr').click(function() 
    trs = $('#myid>tr');
    // $(this)[0]是当前点击的dom元素
    // 在返回的“数组”中查找当前元素的位置,第一个tr的位置是0
    alert(trs.indexOf($(this)[0]));
);

 

这里使用了jQuery库实现。

参考技术B <script type="text/javascript" >
window.onload=function()
document.getElementsByTagName("tr")[2].onmousedown=function(e)
alert("你点了第三个tr");
;


</script>
<body>
<table id="p" border="1px solid pink">
<tr><td>1</td></tr>
<tr><td>2</td></tr>
<tr><td>3</td></tr>
<tr><td>4</td></tr>
<tr><td>5</td></tr>
<tr><td>6</td></tr>
</table>
</body>追问

能不能灵活一点?点第几行就提示第几行?

追答

点第几行提示第几行,需要转换思路,必须将事件加载到每个tr上面,下面是代码。


<script type="text/javascript" >
function test(obj)
        alert("你点了第"+(obj.rowIndex+1)+"个tr,tr内容为:"+obj.innerHTML);


</script>
<body>
<table id="p" border="1px solid pink">
    <tr onmousedown="test(this)"><td>1</td></tr>
    <tr onmousedown="test(this)"><td>2</td></tr>    
    <tr onmousedown="test(this)"><td>3</td></tr>
    <tr onmousedown="test(this)"><td>4</td></tr>
    <tr onmousedown="test(this)"><td>5</td></tr>
    <tr onmousedown="test(this)"><td>6</td></tr>
</table>    
</body>
zhfto同学的javascript实现的很好,至少比我写的这个要好。强烈推荐。

elementUI判断自己选中的哪一行,this.$set在数组里面加上一个字段进行判断,联动实现

文章目录

表格里面的下拉框和进行联动产生的代码


          <!--  //给行添加鼠标点击事件 -->
          <el-table-column
        
           prop="rulcon" label="规则条件" width="300">
            <template slot-scope="scope">
              <el-select clearable
                v-model="dataList2[scope.$index].rulcon"
                @change="changeByCustom(scope.row)"
                style="width: 140px;"
              >
            <el-option label="重叠5%" value="1"></el-option>
            <el-option label="不重叠" value="2"></el-option>
            <el-option label="自定义比例" value="3" ></el-option>
            
              </el-select>

                <el-input 
                style="width: 160px;"  v-if="scope.row.isShow" v-model="dataList2[scope.$index].ruldata"> 
                 
                   <template
                  
                  slot="append"
                  >%</template
                >

               
               </el-input>
            </template>
          </el-table-column>

1.this.$set(isshow,datalist,false),给数组里面的对象加上一个标识字段

this.$set(isshow,dataList,false); 设置这个数组里面的每个对象加上一个字段默认为false.

  this.dataList2.forEach((item)=>
            this.$set(item,'isShow',false)
            if(item.rulcon==3)
              item.isShow = true;
            
          )

2.然后在里面加上了if条例用于判断一个联动是否要显示

3.然后用change事件传过来那个参数进行判断你自己选中的哪个一行


    changeByCustom(row)
    


     
     
      this.dataList2.forEach(item =>
        
// 判断一下选中的是哪一行
        if(item.rulid == row.rulid)   
          // 联动框先设置为false
          item.isShow = false;
          // 如果选中的联动的值是3,不是置为true;
          if(item.rulcon == 3)
        item.isShow = true

          
          
        

      );
      console.info(row,"row----------------");
      

    ,
  

以上是关于JS判断是不是选中的是表格内当前选中的那一行的主要内容,如果未能解决你的问题,请参考以下文章

如何用jquery将勾中复选框的那一行的数据自动添加到同页面的另一个表格

ExtJS中grid单击一行时判断改行的复选框是不是选中,如果选中则单击之后取消选中状态,没有选中则让复选框

C# 怎样判断DEV GridView 中选中的哪一行是分组的标题行

js获取表格中的数据 以及 表格中checkbox选中一行数据

js中table的关于选中某一行的问题

ExtJS中grid单击一行判断改行的复选框是不是选中,如果选中则单击之后取消选中状态,没有选中则让复选框