1

如果我在 div 中有一个脚本,我如何获取该特定 div 的 id?
(这样我就可以像下面那样做,但使用不同的 div id):

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

[编辑]:
我有两个 html 视图,当单击一个视图的按钮时,会显示第二个视图。
一些javascript重建html来做到这一点,我只希望图表显示在第二个视图上,所以我有一个点击事件来处理这个。
但奇怪的是,通过将调用 drawChart() 的脚本放在 div 本身中,我只设法将特定图表加载到特定 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。

4

3 回答 3

2

使用 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>
于 2013-08-19T02:33:29.027 回答
1

脚本标签在页面上的位置没有区别。你仍然必须使用

document.getElementById('chart_div1');

您无法获取与<script>标签相关的元素。另外ID,无论如何,您的 ' 应该是唯一的,因此没关系。

好吧,实际上有几种方法可以做到这一点,但它甚至不值得。document.body.lastChild如果页面加载与正常情况略有不同,那么使用它可能会破坏您的整个脚本。

于 2013-08-19T02:32:30.183 回答
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>

有关详细信息,请参见此处:如何选择 <script> 元素的父级

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

干杯!

于 2013-08-19T02:39:08.303 回答