如果我在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。
答案 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文档的末尾,并使用适当的选择器来定位元素。
干杯!