如果我在div中有一个脚本,我如何获得该特定div的id? <BR/>

时间:2013-08-19 02:29:52

标签: javascript html

如果我在div中有脚本,我如何获得该特定div的id?
(所以我可以像下面这样做,但有不同的div id):

<div id="chart_div1" class ="googlepie">
<script type="text/javascript">
   drawChart('chart_div1');
</script>
</div>

[edit]:
我有两个html视图,当单击一个视图的按钮时,将显示第二个视图。
一些javascript重建html来做到这一点,我只想让图表显示在第二个视图上,所以我有一个点击事件来处理这个。
但奇怪的是,我只是设法通过在div本身中调用drawChart()的脚本来加载特定div(多次重复)中的特定图表,如上所述。出于这个原因,我无法将脚本重新定位到更舒适的位置,就像有人建议的那样。此外,无论采取什么建议的方法来获取父亲div'ID'我试过,我不断得到一个'未定义的容器'错误。

例如,这对我没用:

<div class ="googlepie" id="chart_div1" style ="position:absolute; top: -8%; left:63%;">
<script type="text/javascript" class ="chartscript" id="bakegooglepie">
    // drawChart($('.chartscript').parent().attr('id'));  // this didnt work
    // drawChart($('#bakegooglepie').parent().attr('id'));  // neither did this

    // var parentElementID = $(document.body.lastChild).closest('div').id;
    // drawChart(parentElementID); // this didnt either

    drawChart('chart_div1');   // only this did
</script>

因此我的(特定)解决方案是构造id并在drawChart中专门调用它们,而不是使用javascript获取id。
但是,我选择原始问题的答案是其他人似乎都在努力的答案,因此应该为其他人工作。

注意:正如其他人在大多数情况下建议的那样,你不应该像我的问题那样得到父ID。

3 个答案:

答案 0 :(得分:1)

脚本标记在页面上的位置没有区别。你仍然需要使用

document.getElementById('chart_div1');

您无法获取与<script>标记相关的元素。另外,你的ID应该是唯一的,所以它无关紧要。

实际上有几种方法可以做到这一点,但它甚至不值得。通过document.body.lastChild执行此操作,如果页面加载与正常情况略有不同,则可能会破坏整个脚本。

答案 1 :(得分:1)

使用jQuery获取父div的id:

     $(this).parent().attr('id')

在你的情况下:

    <div id="chart_div1" class ="googlepie" style ="position:absolute; top: -4%; left:68%;">
    <script type="text/javascript" id='example'>
      drawChart($('#example').parent().attr('id'));
    </script>
    </div>

答案 2 :(得分:1)

试试这个(jQuery):

<div id="chart_div1" class ="googlepie" style ="position:absolute; top: -4%; left:68%;">
    <script type="text/javascript">
        var parentElement = $(document.body.lastChild).closest('div');
        drawChart(parentElement);
    </script>
</div>

或者这个(基本的JavaScript):

<div id="chart_div1" class ="googlepie" style ="position:absolute; top: -4%; left:68%;">
    <script type="text/javascript">
        var scriptTag = document.scripts[document.scripts.length - 1];
        var parentTag = scriptTag.parentNode;
        drawChart(parentTag.id);
    </script>
</div>

请点击此处了解详情:how to select parent of <script> element

虽然这回答了你如何实现它的问题,但我相信这不是最好的方法。您应该将JavaScript代码放在HTML文档的末尾,并使用适当的选择器来定位元素。

干杯!