Javascript 需要JS修改脚本后面的元素

Javascript 需要JS修改脚本后面的元素,javascript,jquery,html,Javascript,Jquery,Html,我有一个报表创作工具,可以在包含数据的表之前,在报表标题中添加描述性文本。该工具附带的示例显示了如何在各种特效的描述中包含Javascript。我想将表中的某些单元格更改为指向其他报表的链接。下面是报告工具生成的HTML <div class="element-info"> <div class="description">My Description</div> <div class="properties"> <table

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

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

我的描述
...
我尝试用以下内容替换“我的描述”,但(也许并不奇怪)它改变了表格以外的内容

<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>
我的描述
//我的Firefox版本支持currentScript。
var me=document.currentScript;
//上两层以获得封闭div
var element_info=me.parentElement.parentElement;
//从那里我们需要properties div,然后是表
var mytable=element_info.lastChild.firstChild;
mytable.style.color=“红色”;
我认为问题在于,当脚本运行时,下面div中的HTML还没有被解析。Mozilla说,在没有src=属性的脚本中,defer属性将被忽略,我已经验证了它没有任何作用


尽管我的示例代码使用的是纯Javascript,但编写工具基于jQuery,因此如果需要,它的完整功能表是可用的。

如果问题涉及到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>
我的描述
//立即获取参考资料。。。
var script_of_interest=document.currentScript;
//并且仅在加载所有内容后使用:
window.onload=函数(){
var element_info=script_of_interest.parentElement.parentElement;
var mytable=element_info.lastChild.firstChild;
mytable.style.color=“红色”;
};

如果问题涉及到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>
我的描述
//立即获取参考资料。。。
var script_of_interest=document.currentScript;
//并且仅在加载所有内容后使用:
window.onload=函数(){
var element_info=script_of_interest.parentElement.parentElement;
var mytable=element_info.lastChild.firstChild;
mytable.style.color=“红色”;
};

如果问题涉及到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>
我的描述
//立即获取参考资料。。。
var script_of_interest=document.currentScript;
//并且仅在加载所有内容后使用:
window.onload=函数(){
var element_info=script_of_interest.parentElement.parentElement;
var mytable=element_info.lastChild.firstChild;
mytable.style.color=“红色”;
};

如果问题涉及到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>
我的描述
//立即获取参考资料。。。
var script_of_interest=document.currentScript;
//并且仅在加载所有内容后使用:
window.onload=函数(){
var element_info=script_of_interest.parentElement.parentElement;
var mytable=element_info.lastChild.firstChild;
mytable.style.color=“红色”;
};

确保在执行脚本之前加载您的节点,否则您的节点可能未定义或什么都没有。您可以尝试使用
$(文档).ready(函数(){
//你的代码

})

确保在执行脚本之前加载了脚本操作的节点,否则节点可能未定义或什么都没有。您可以尝试使用
$(文档).ready(函数(){
//你的代码

})

确保在执行脚本之前加载了脚本操作的节点,否则节点可能未定义或什么都没有。您可以尝试使用
$(文档).ready(函数(){
//你的代码

})

确保在执行脚本之前加载了脚本操作的节点,否则节点可能未定义或什么都没有。您可以尝试使用
$(文档).ready(函数(){
//你的代码

})

我怀疑(部分)问题在于
元素\u info.lastChild.firstChild
将引用
元素前面的换行符/空文本节点。我建议:
console.log(mytable)
来验证您是否真正以table元素为目标。你是对的,你瞄准的元素目前还不存在。那么为什么不把
放在它所指的
后面呢?或者使用
元素的
onload
/
load
事件触发脚本运行?关于textNode的好观点。我没想到。我很想把代码放在表的后面,但是我唯一能注入代码的地方是description div。我怀疑(部分)问题是
元素\u info.lastChild.firstChild将引用
元素前面的换行/空文本节点。我建议:
console.log(mytable)
来验证您是否真正以table元素为目标。你是对的,你瞄准的元素目前还不存在。那么为什么不把
放在它所指的
后面呢?或者使用
元素的
onload
/
load
事件触发脚本运行?G