在后端生成HTML源代码,我使用单独的独立小部件.
我只是将这样的标记包含在生成的HTML输出中.
<div>
I want to work with this DOM element
<script>
new Obj(/*but I can't get this <div> as a parameter! */);
</script>
</div>
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法来查找obj创建它的DOM元素(没有任何唯一ID).这将增加我的应用程序的灵活性,并加快开发速度.但这在JavaScript中是否可行?
Tra*_*s J 10
你可以在那里播种一个元素然后得到它的父元素,然后删除元素.
<div>
I want to work with this DOM element
<script>
document.write("<div id='UniqueGUID_3477zZ7786_' style='display:none;'></div>");
var thatDivYouWanted;
(function(){
var target = document.getElementById("UniqueGUID_3477zZ7786_");
thatDivYouWanted = target.parentNode;
target.parentNode.removeChild(target);
})();
new Obj(/*but I can't get this <div> as a parameter! */);
</script>
</div>
Run Code Online (Sandbox Code Playgroud)
以下代码有效:
<script>
function Obj(color) {
var scriptTags = document.getElementsByTagName("script");
var scriptTag = scriptTags[scriptTags.length - 1];
// find parent or do whatsoever
var divTag = scriptTag.parentNode;
divTag.style.backgroundColor = color;
}
</script>
<div>
I want to work with this DOM element
<script>new Obj("green");</script>
</div>
<div>
I want to work with this DOM element
<script>new Obj("yellow");</script>
</div>
<div>
I want to work with this DOM element
<script>new Obj("lime");</script>
</div>Run Code Online (Sandbox Code Playgroud)
此方法具有非常简单的代码,对性能几乎没有影响.
注意:我很确定这对IE6不起作用(据我记得它不支持操作开放标记).