是否可以获取在JavaScript中调用函数的HTML元素?
例如我在HTML中有这个:
<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>
谢谢。
答案 0 :(得分:1)
在此处调用它的方式,当myFunction
正在运行时,文档只会被解析为script
中的#my-container
元素。因此,您可以使用
var scripts = document.getElementsByTagName('script');
var currentScript = scripts[scripts.length - 1];
var myContainer = currentScript.parentNode;
获取元素。
答案 1 :(得分:0)
我终于想出了这个解决方案:
希望它有所帮助。
/**
* 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;
}