需要JS来修改脚本

时间:2015-07-29 17:22:29

标签: javascript jquery html

我有一个报表创作工具,可以让我在包含数据的表之前在报表标题中添加描述性文本。该工具附带的示例显示了如何在描述中包含Javascript以用于各种特殊效果。我想将表格中的某些单元格更改为其他报表的链接。这是报告工具生成的HTML。

<div class="element-info">
  <div class="description">My Description</div>
  <div class="properties">
    <table>...</table>
  </div>
</div>

我试过更换&#34;我的描述&#34;以下内容,但(也许不出所料)它改变了除桌子之外的其他东西。

<div>My Description
<script type="text/javascript">
// currentScript is supported in my version of Firefox.
var me = document.currentScript;
// go up two levels to get the enclosing div
var element_info = me.parentElement.parentElement;
// from there we want the properties div, then the table
var mytable = element_info.lastChild.firstChild;
mytable.style.color = "red";
</script>
</div>

我希望问题是当脚本运行时,以下div中的HTML尚未解析。 Mozilla说在没有src =属性的脚本中将忽略defer属性,并且我已经验证它没有做任何事情。

虽然我的示例代码使用普通的Javascript,但是创作工具基于jQuery,因此如果需要,它可以提供完整的全部功能。

2 个答案:

答案 0 :(得分:2)

如果问题涉及html尚未解析的事实,您可以立即获得对脚本的引用,但只有以后才能使用它,一旦文件加载。它看起来像这样:

<div>My Description
    <script type="text/javascript">
    // Get the reference immediately...
    var script_of_interest = document.currentScript;

    // And only use it once everything is loaded:
    window.onload = function() {
        var element_info =  script_of_interest.parentElement.parentElement;
        var mytable = element_info.lastChild.firstChild;
        mytable.style.color = "red";
    };
    </script>
</div>

答案 1 :(得分:1)

确保您的脚本操作的节点在执行之前已加载,否则您的节点可能未定义或只是没有。您可以尝试使用包装代码 $(document).ready(function(){ //your code })