需要JS来修改脚本后面的元素
Need JS to modify the element following the script
我有一个报告创作工具,它允许我在包含数据的表之前在报告标题中添加描述性文本。该工具附带的示例展示了如何在各种特效的描述中包含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>
我认为问题是当脚本运行时,下面的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>
确保脚本操作的节点在执行前已加载,否则节点可能未定义或什么都没有。您可以尝试用$(document).ready(function(){
//your code
})
.
相关文章:
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 浏览器是否持久缓存脚本元素的编译版本
- 如何使用java脚本或jQuery基于相同的特定css属性对元素进行分组
- 如何使用以下脚本在单击时显示树结构的元素
- 无法通过内容脚本使用jQuery更改HTML元素的样式
- AJAX和php脚本后添加的表单元素未传输到$_POST
- 如何调用绑定到angular元素的java脚本函数
- 注入的元素和jQuery脚本.如何让他们一起工作
- 动态添加的输入元素不会在脚本中返回值
- 火虫找到隐藏我的元素的脚本
- 如何在呈现页面后使用 Java 脚本检测 dom 元素值的值是否有任何变化(例如,任何输入或复选框值更改)
- 从外部 js 脚本创建元素并插入到 html 中
- jQuery:调用脚本时隐藏元素
- 使用java脚本在html中插入元素
- 创建一个本地脚本来操作网站中的DOM元素
- 为什么这个脚本只工作一次?只替换元素一次,然后再也不替换
- 如何在加载表单时获得对Builder配置的Jenkins果冻脚本中表单元素的引用
- 如何将 DOM 元素脚本添加到头部分
- 如何向内容添加元素(脚本)
- 来自 W3C 验证程序的错误“元素脚本不得具有属性延迟,除非还指定了属性 src”