日期:2014-05-16  浏览次数:20419 次

如何获知脚本所在元素或父元素?
我有个html片段会被动态载入:

<table>balabala </table>
<script type="text/javascript"> 
statement
</script>

这个片段会被插入到某个隐藏div内,statement需要得到这个div然后显示它。请问如何得到这个div?
一个迂回的办法是,给table一个唯一的id,然后获得它的父元素。但是,因为html片段可能很多,这个不太容易保证id的无冲突。有更合适的办法吗?

------解决方案--------------------
obj.parentNode.style.display="block"
------解决方案--------------------
每次插入的时候给table加id,然后保存下业,操作的时候不就知道ID了吗.
------解决方案--------------------
你要得到这个片段,总得让这个片段有个可以识别的身份喽。。。不然怎么办?
------解决方案--------------------
不知道你为什么要这么做。
但是如果非要这么做的话
建议这里的<script type="text/javascript">
statement
</script>

脚本语言别当做插入的对象。而是吧它当做初始化就加载好的一个函数,这个函数有一个参数就是当前插入的所在的DIV对象
比如
<script type="text/javascript">
function insertinto(objectDiv)</script>
然后你在你动态载入这个动作的时候同时调用这个函数并且给它传参数当前插入所在的对象。。
我想你在动态载入的地方是可以获得这个对象的吧


------解决方案--------------------
HTML code
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
  <SCRIPT LANGUAGE="JavaScript">
  <!--
    function hide(e)
    {
        e.srcElement.style.display = "none";
    }
  //-->
  </SCRIPT>
 </HEAD>

 <BODY>
  <INPUT TYPE="button" VALUE="click me" ONCLICK="hide(event)">
 </BODY>
</HTML>

------解决方案--------------------
探讨
回 6楼 @yibey

你那个给函数起名字的方法优点是我确实可以产生那个参数并传给函数,问题是
1.这要求框架和片段约定函数名称。这是内容耦合。而本来我只需要知道片段文件名就行了,内容怎么写无所谓。
2.引入了新名称,要解决名字冲突。

------解决方案--------------------
要是能知道这个片段的id的话,就方便了
如果可以用jquery 可以这样试试
HTML code

<table onclick="fn_click(this)">balabala </table>
<script type="text/javascript">  
function fn_click(th)
{
    alert($(th).parent("div").attr("id"));
}
</script>

------解决方案--------------------
这个想法不太好 代码和HTML互依赖性太高

你就显式的用代码说 当我点下某个按钮后 某个DIV显示或者关闭 很难吗 

另外html片断在多 也不会冲突 DOM的结构就是一棵树的结构
本质上不会有任何重叠的节点