<table id="table" style="text-align:center;">
  <tr>
    <td>xxxxxxx</td>
    <td> xx xx xx<img src="xxx" id="img_1" onclick="clickAction()"/><div id="div_1" style="display:none;">xxxx<div></td>
    <td>xxxxxxx</td>
    <td>xxxxxxx</td>
  </tr>
  <tr>
    <td>xxxxxxx</td>
    <td> xx xx xx<img src="xxx" id="img_2" onclick="clickAction()"/><div id="div_2" style="display:none;">xxxx<div></td>
    <td>xxxxxxx</td>
    <td>xxxxxxx</td>
  </tr>
</table>有以上表,在表外还有其他的东西套着,我就不一一写了。
表的行数不定,列数也不定,但是每行的第二列一定会有img_x这么一个图片,点击图片触发click事件,将div_x显示出来。但是要控制好div显示的位置,这里要设置它的left。
请问怎么根据图片获取它在td中距离左侧的px数值呢?

解决方案 »

  1.   

    function clickAction(obj){
            if(obj.nextSibling.nodeType==1){
                obj.nextSibling.style.display = 'block';
                return;
            }
            clickAction(obj.nextSibling);
    }
    这里改下
    <img src="xxx" id="img_1" onclick="clickAction(this)"/>
      

  2.   

    希望对你有用。
    function clickAction(node){
    var nodeLeftWidth = node && node.offsetLeft;
        alert(nodeLeftWidth);
    }
      

  3.   

    document.getElementById('imgId').offsetLeft;
      

  4.   


    = = 我是要获取图片离当前td的左侧有多少px,和显示没啥关系……
    要确定的是div显示的位置...而不是显示或隐藏状态。
      

  5.   

    <table id="table" style="text-align:center;">
      <tr>
        <td>xxxxxxx</td>
        <td> xx xx xx<img src="xxx" id="img_1" onclick="clickAction(this)"/><div id="div_1" style="display:none;">xxxx<div></td>
        <td>xxxxxxx</td>
        <td>xxxxxxx</td>
      </tr>
      <tr>
        <td>xxxxxxx</td>
        <td> xx xx xxxxxxxxxxxxxxxxxx<img src="xxx" id="img_2" onclick="clickAction(this)"/><div id="div_2" style="display:none;">xxxx<div></td>
        <td>xxxxxxx</td>
        <td>xxxxxxx</td>
      </tr>
    </table>
    <script type="text/javascript">
        function clickAction(o) {
            alert(o.offsetLeft)
        }
    </script>
      

  6.   


    谢啦~虽然这个不是完全解决,但是给了我灵感哟~
    最后的解决代码:
    <img src="xxx" id="img_1" onclick="clickAction(this)"/>function clickAction(t){
    var leftWidth = t.offsetLeft - t.parentNode.previousSibling.offsetWidth + 16;//用图片的left减去第一个td的宽度加上图片的宽度就OK啦。
    }