2016-02-03 29 views
0

我正在尝试获取由qUnit创建的DOM对象的引用,但没有运气。它适用于“自制”DOM元素。我已经做了test site来说明这个问题。访问网站时打开Firebug或其他日志记录窗口。document.getElementById找不到qUnit DOM元素

这是网站的代码:

window.onload = function() { 
 

 
\t var qunitTestrunnerToolbar_element = document.getElementById("qunit-testrunner-toolbar"); 
 
\t console.log("qunitTestrunnerToolbar_element: ", qunitTestrunnerToolbar_element); 
 

 
\t var test_element = document.getElementById("test_element"); 
 
\t console.log("test_element: ", test_element); 
 
};
<!doctype html> 
 
<html> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <title>Testing 'require' error</title> 
 
</head> 
 
<body> 
 
    <p>See console for output</p> 
 
    <script src="index.js"></script> 
 
    <script src="http://code.jquery.com/jquery-2.2.0.js"></script> 
 
    <p id="test_element">Test element</p> 
 
</body> 
 
</html>

回答

1

它不会像这样

我不是在谈论qunitdocument.getElementById("qunit-testrunner-toolbar");将返回null,因为工作这个html中没有元素存在。

如果您特别询问如何获得实际的ID,而不是null

你可以,添加您的原始脚本文件在这个网站然后var qunitTestrunnerToolbar_element = document.getElementById("qunit-testrunner-toolbar");consoleindexjs或者如果可以的话包括:在您的测试HTML,你可以做

<iframe src="urlWithinYourDomain.html" style="display:none" id="iframeId"></iframe> 和indexjs

var qunitTestrunnerToolbar_element = document.getElementById('iframeId').contentWindow.document.getElementById('qunit-testrunner-toolbar');如果你喜欢html的方式。

+0

你说得对,DOM元素从来没有在我给出的玩具例子中实现。在我努力找出问题的同时,我也失去了错误本身:/ 在我的真实代码中,DOM元素实际上是* do * materialize。 我刚刚意识到我必须处理计时问题。如果我使用window.setTimeout将我的查询推迟了将来两秒,我就成为'qunit-testrunner-toolbar' DOM元素引用的快乐主人:) 我现在想知道如何在更多美丽的态度。我如何知道qUnit DOM元素何时准备好?但是,这将是另一个问题。 – loldrup