获取在JavaScript中调用函数的元素

时间:2014-04-10 20:27:54

标签: javascript html dom

是否可以获取在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>

谢谢。

2 个答案:

答案 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;
}