获取在JavaScript中从中调用函数的元素
可以从JavaScript中调用的函数中获取HTML元素吗 例如,我的HTML中有:获取在JavaScript中从中调用函数的元素,javascript,html,dom,Javascript,Html,Dom,可以从JavaScript中调用的函数中获取HTML元素吗 例如,我的HTML中有: <script type="text/javascript"> function myFunction() { var myContainer = getElementFromWhichFunctionIsCalled(); // Possible? (myContainer.id == 'my-container'); // TRUE } </
<script type="text/javascript">
function myFunction() {
var myContainer = getElementFromWhichFunctionIsCalled(); // Possible?
(myContainer.id == 'my-container'); // TRUE
}
</script>
<div id="my-container">
<script type="text/javascript">myFunction();</script>
</div>
函数myFunction(){
var myContainer=GetElementWhichFunction被调用();//可能吗?
(myContainer.id==“我的容器”);//TRUE
}
myFunction();
谢谢。按照您在这里的称呼,当运行
myFunction
时,文档将只解析到#my container
中的script
元素。因此,您可以使用
var scripts = document.getElementsByTagName('script');
var currentScript = scripts[scripts.length - 1];
var myContainer = currentScript.parentNode;
获取元素。我终于想出了这个解决方案: 希望它能帮助别人
/**
* Creating a temporary element to fetch it's parent element.
*/
function getElementFromWhichFunctionIsCalled() {
// Generating unique ID for temporary element.
var trickElementId = 'trick-element-' + Math.floor(Math.random() * 100000);
// Adding temporary element to the DOM.
document.write('<div id="' + trickElementId + '"></div>');
// Getting hold of added element.
var trickElement = document.getElementById(trickElementId);
// Getting parent element of our trick element.
var foundElement = trickElement.parentNode;
// Cleaning up (removing trick element from the DOM).
foundElement.removeChild(trickElement);
return foundElement;
}
/**
*创建临时元素以获取其父元素。
*/
调用函数的函数GetElement(){
//正在为临时元素生成唯一ID。
var trickElementId='trick element-'+Math.floor(Math.random()*100000);
//向DOM中添加临时元素。
文件。写(“”);
//获取添加的元素。
var trickElement=document.getElementById(trickElementId);
//获取技巧元素的父元素。
var foundElement=trickElement.parentNode;
//清理(从DOM中删除技巧元素)。
foundElement.removeChild(trickElement);
返回元素;
}
可能值得一看:但最简单的解决方案是只使用myFunction(this)
,它将显式地传入DOM
object@MarcB嗯此
将是全局上下文(窗口
),而不是
DOM节点。或者,由于您有DIV ID,因此可以调用myFunction('my-container')。在函数中,您可以使用刚才传入的名称。@durbnpoisin,这对我来说太硬了)哇!聪明的把戏!)它与所有渲染引擎一致吗?它是向前兼容的吗?你的想法看起来很合理。然而,这个把戏对我不起作用。它得到了错误的脚本元素。当第三方服务(如Google Analytics等)动态生成其他脚本元素时,可能会变得复杂。