如何从JavaScript访问生成的HTML元素?

时间:2018-04-18 13:48:52

标签: javascript html dynamics-nav

我想访问Dynamics NAV Webclient中的表格。如果我检查我正在处理的页面的html源代码大约有20行没有任何表格,但是当我在firefox检查器中查看sorucecode时,我可以看到html结构,包括table-tag中的id。 / p>

源代码:

Normal Sourcecode from Browser

检查员代码:

enter image description here

所以我认为我可以通过使用getelementfromid,queryselector等函数来访问我的html表(仅在检查器中可见)。 结果我总是得到NULL。

这表示在完全呈现页面之前执行了js-code。我决定在它周围包装一个$(document).ready() - 函数来启动执行。也不行。

我尝试建立第二个例子。我刚刚创建了一个包含html表的简单html页面,并尝试通过我之前提到的函数访问它。这非常有效。

您是否有任何提示或解决方案可以访问此表?

提前谢谢

编辑:

$(document).ready(function()
        { 
            var table = document.getelementbyid('5E9D_BusinessGrid')
        });

2 个答案:

答案 0 :(得分:0)

您是否尝试通过扩展程序访问此表?

如果TABLE存在,你可以设置一个setTimeout计时器重复直到表出现,然后在它出现后执行你想要的代码。

这不是真正的代码,但可以让您了解自己需要做什么。

function REPEAT_LOOK_FOR_TABLE(){
var LEN = document.getElementsByTagName('TABLE').length;
for(i=0; i<LEN; i++){
    console.log(document.getElementsByTagName('TABLE')[i]);
    alert(document.getElementsByTagName('TABLE')[i]);
}
setTimeout( REPEAT_LOOK_FOR_TABLE(); , 1000 ); // Checks ever 1 second.
}REPEAT_LOOK_FOR_TABLE();// Starts it up.

就像我说的那样,这不是一个有效的例子,只是研究或修复它。你将能够找到你想要的桌子。

此外,你想要一个IF语句,所以如果找到了表,请执行你想要的代码,如果找不到表,只需保持setTimeout每1秒重复一次。所以是的,编写代码来关闭那个大坝重复的东西: - )

此表也没有出现onload,因为脚本是独立于页面加载的。如果脚本位于BODY上方的HEADER部分,那么您的脚本字将正常工作,因为您的浏览器必须在onload完成之前获取这些脚本。与放在页面中间或BODY部分的脚本不同。

答案 1 :(得分:0)

我找到了解决方案。我可以从代码中访问获取“boot”-script的代码,例如:

var msnavdocument = document.getElementById("boot").ownerDocument.activeElement.contentDocument;

我可以访问每个html组件。 也许这有助于未来的Microsoft NAV JavaScript Addin Developer。