行内按钮,递归获取所在table对象的代码问题,百分百结贴

时间:2022-12-12 23:24:08
代码如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>无标题页</title>
    <script language="javascript" type="text/javascript">
        function getTableObj() {
            var senderObj = window.event.srcElement;
            var tableObj = getTable(senderObj);
            var tableID = tableObj.id;
        }
        //递归方法
        function getTable(senderControl) {
            var parentObj = senderControl.parentNode;
            var a = parentObj.tagName;
            if(parentObj.tagName == "TABLE") {
                return parentObj
            }
            getTable(parentObj);
        }
    </script>
</head>
<body>
    <table id="tableContent">
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
            <td><input type="button" value="获取table对象" onclick="getTableObj();" /></td>
        </tr>
    </table>
</body>
</html>

点击行内的按钮,然后通过这个按钮获取他所在的table对象。
我写的那个递归方法有问题,返回的是undefined,请大家帮我看看。

8 个解决方案

#1


parentObj.tagName == "TABLE"
这里有问题 你可以在判断前输出tagName看看是什么样的

#2


引用 1 楼 oggmm 的回复:
parentObj.tagName == "TABLE"
这里有问题 你可以在判断前输出tagName看看是什么样的

多谢帮顶,这个我看了 没问题 我是只要是table就跳出的,结果那个递归方法有问题,跳出后,还执行了几次,不知道为什么?希望能帮改改!指出问题所在!

#3



<input type="button" value="获取table对象" onclick="getTableObj(this);" />


function getTableObj(obj) {
            var tableObj;
            var pNode=obj.parentNode;
while(pNode){
    if(pNode.tagName.toLowerCase()=="table"){
        tableObj = pNode;
        break;
    }
    else{
        pNode=pNode.parentNode;
    }
}
          alert(tableObj.id);
        }

#4


楼上的多谢,能用递归做个吗?

#5


引用 4 楼 fox123871 的回复:
楼上的多谢,能用递归做个吗?

其实都差不多啊 。你改改就会了 。
你那个方法有点毛病 ,应该是不是table就调用自己 。
是的话就return !

#6



<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>无标题页</title>
    <script language="javascript" type="text/javascript">
        function getTableObj(e) {
            e = e || window.event;
            var senderObj = e.srcElement || e.target;
            var tableObj = getTable(senderObj);
            var tableID = tableObj.id;
            alert(tableID);
        }
        //递归方法
        function getTable(senderControl) {
            var parentObj = senderControl.parentNode;
            var a = parentObj.tagName;
            if(parentObj.tagName == "TABLE") {
                return parentObj;
            }
            return getTable(parentObj);
        }
    </script>
</head>
<body>
    <table id="tableContent">
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
            <td><input type="button" value="获取table对象" onclick="getTableObj(event);" /></td>
        </tr>
    </table>
</body>
</html>

#7



<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>无标题页</title>
    <script language="javascript" type="text/javascript">
        function getTableObj(e) {
            e = e || window.event;
            var senderObj = e.srcElement || e.target;
            var tableObj = getTable(senderObj);
            var tableID = tableObj.id;
            alert(tableID);
        }
        function getTable(senderControl) {
            var parentObj = senderControl.parentNode;
            var a = parentObj.tagName;
            if(parentObj.tagName == "TABLE") {
                return parentObj;
            }
            return getTable(parentObj);
        }
    </script>
</head>
<body>
    <table id="tableContent">
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
            <td><input type="button" value="获取table对象" onclick="getTableObj(event);" /></td>
        </tr>
    </table>
</body>
</html>

#8


犀利,我少了个return,立刻结贴散分,多谢大家的帮助!

#1


parentObj.tagName == "TABLE"
这里有问题 你可以在判断前输出tagName看看是什么样的

#2


引用 1 楼 oggmm 的回复:
parentObj.tagName == "TABLE"
这里有问题 你可以在判断前输出tagName看看是什么样的

多谢帮顶,这个我看了 没问题 我是只要是table就跳出的,结果那个递归方法有问题,跳出后,还执行了几次,不知道为什么?希望能帮改改!指出问题所在!

#3



<input type="button" value="获取table对象" onclick="getTableObj(this);" />


function getTableObj(obj) {
            var tableObj;
            var pNode=obj.parentNode;
while(pNode){
    if(pNode.tagName.toLowerCase()=="table"){
        tableObj = pNode;
        break;
    }
    else{
        pNode=pNode.parentNode;
    }
}
          alert(tableObj.id);
        }

#4


楼上的多谢,能用递归做个吗?

#5


引用 4 楼 fox123871 的回复:
楼上的多谢,能用递归做个吗?

其实都差不多啊 。你改改就会了 。
你那个方法有点毛病 ,应该是不是table就调用自己 。
是的话就return !

#6



<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>无标题页</title>
    <script language="javascript" type="text/javascript">
        function getTableObj(e) {
            e = e || window.event;
            var senderObj = e.srcElement || e.target;
            var tableObj = getTable(senderObj);
            var tableID = tableObj.id;
            alert(tableID);
        }
        //递归方法
        function getTable(senderControl) {
            var parentObj = senderControl.parentNode;
            var a = parentObj.tagName;
            if(parentObj.tagName == "TABLE") {
                return parentObj;
            }
            return getTable(parentObj);
        }
    </script>
</head>
<body>
    <table id="tableContent">
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
            <td><input type="button" value="获取table对象" onclick="getTableObj(event);" /></td>
        </tr>
    </table>
</body>
</html>

#7



<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>无标题页</title>
    <script language="javascript" type="text/javascript">
        function getTableObj(e) {
            e = e || window.event;
            var senderObj = e.srcElement || e.target;
            var tableObj = getTable(senderObj);
            var tableID = tableObj.id;
            alert(tableID);
        }
        function getTable(senderControl) {
            var parentObj = senderControl.parentNode;
            var a = parentObj.tagName;
            if(parentObj.tagName == "TABLE") {
                return parentObj;
            }
            return getTable(parentObj);
        }
    </script>
</head>
<body>
    <table id="tableContent">
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
            <td><input type="button" value="获取table对象" onclick="getTableObj(event);" /></td>
        </tr>
    </table>
</body>
</html>

#8


犀利,我少了个return,立刻结贴散分,多谢大家的帮助!