-
新手问题:JavaScript中getElementById()为空或不是对象 怎么解决20
test.js
var ie = WScript.createobject("InternetExplorer.Application"); var eoms1 = "http://xxx.com/url1/"; var eoms2 = "http://xxx.com/url2/"; ie.Navigate(eoms1); SynchronizeIE();//等待ie加载完成 var doc = ie.document; var bb = doc.getElementsByName("submit"); doc.forms[0].j_username.value = "xxxxx"; doc.forms[0].j_password.value = "xxxxx"; bb[0].click(); //上面自动登陆该网站,可正确执行 SynchronizeIE();//等待ie加载完成 ie.Navigate(eoms2); SynchronizeIE();//等待ie加载完成 var doc2 = ie.document; ie.Visible = true; SynchronizeIE();//等待ie加载完成 var dutyDOM = doc2.getElementById("dutymain").getElementById("topbar1").getElementsByTagName("td"); 这里出错,提示"doc2.getElementById()为空或不是对象!" dutyDOM[1].fireEvent("onclick"); SynchronizeIE(); function SynchronizeIE() { //等待ie加载完成 while(ie.Busy) { WScript.Sleep(100); } }
xxx.com/url2查看到的源代码:<DIV [color=#FF0000]id=dutymain[/color]><TABLE width="100%" border=0 xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="http://mycompany.com/mynamespace" xmlns:xslt="http://www.w3.org/TR/WD-xsl"> <TBODY> <TR> <TD vAlign=top> <DIV id=toolBar> <TABLE id=topbar1 style="BORDER-RIGHT: 1px outset; BORDER-TOP: 1px outset; FONT-SIZE: 12pt; BORDER-LEFT: 1px outset; BORDER-BOTTOM: 1px outset" borderColor=#f5f5f1 height=35 cellSpacing=2 cellPadding=0 width=120 bgColor=#c0cef3 border=0> <TBODY> <TR> <TD onmousedown="this.style.border='2 #cccccc inset';" onmouseover="this.style.border='2 #eeeeee outset';this.style.cursor='hand'" style="BORDER-RIGHT: #ffffff 2px; BORDER-TOP: #ffffff 2px; BORDER-LEFT: #ffffff 2px; CURSOR: hand; BORDER-BOTTOM: #ffffff 2px" onclick=self.print(); onmouseout="this.style.border='2 #ffffff'" vAlign=center noWrap><IMG src="http://xxx.com/url11/images/print.gif" border=0><FONT color=darkblue>打印</FONT></TD></TR> <TR class=topbar vAlign=center align=left> <TD onmousedown="this.style.border='2 #cccccc inset';" onmouseover="this.style.border='2 #eeeeee outset';this.style.cursor='hand'" style="BORDER-RIGHT: #ffffff 2px; BORDER-TOP: #ffffff 2px; BORDER-LEFT: #ffffff 2px; CURSOR: hand; BORDER-BOTTOM: #ffffff 2px" onclick="getDutyWork('DUTY_WORK_CHECK')" onmouseout="this.style.border='2 #ffffff'" vAlign=center noWrap><IMG src="http://xxx.com/url11/images/filesselected.gif" border=0><FONT color=darkblue>巡检记录</FONT></TD></TR> <TR> <TD onmousedown="this.style.border='2 #cccccc inset';" onmouseover="this.style.border='2 #eeeeee outset';this.style.cursor='hand'" style="BORDER-RIGHT: #ffffff 2px; BORDER-TOP: #ffffff 2px; BORDER-LEFT: #ffffff 2px; CURSOR: hand; BORDER-BOTTOM: #ffffff 2px" onclick="getDutyWork('DUTY_WORK_AFFAIR')" onmouseout="this.style.border='2 #ffffff'" vAlign=center noWrap><IMG src="http://xxx.com/url11/images/menu_link_default.gif" border=0><FONT color=darkblue>事务记录</FONT></TD></TR> .....下面还有
xxx.com/url2 页面中 之间的代码是加载另外一个xsl文件得到的
如果说页面没有加载完成,我手动点击那个连接是有效的啊2010年1月26日 20:25
7个答案 按时间排序 按投票排序
-
<script type="text/javascript" defer="defer">
加上defer这个属性,这个表示document加载完后,才开始加载script标签的内容2010年2月03日 13:45
-
就是加载顺序问题。浏览器加载到这行语句doc2.getElementById("dutymain")的时候这个dutymain对象浏览器还没有加载。所示会报这种错误。
如果你把这句代码放到一个函数中。等页面加载完毕了再去执行这个函数就不会报错了。可以用window.onload事件来执行这个方法。2010年2月03日 11:02
-
function $(id){
if(document.all){
return document.all[id];
}else{
return document.getElementById(id);
}
}
如果这样不行的话,建议lz找一个jquery的源码,研究一下jquery里面的对象是如何获取的2010年2月03日 08:42
-
js是纯解释型语言。
是按照游览器解析HTML页面的顺序进行执行的。
所以这点在开发的时候要特别注意。
如很多框架都提供了这样一个方法,用来判断页面的dom是否全部加载完成。
如jquery的$(function(){ alert('加载完毕'); })
2010年2月01日 07:31
-
# var dutyDOM = doc2.getElementById("dutymain").getElementById("topbar1").getElementsByTagName("td");
不知道你这样写意图何在?2010年1月27日 18:05
-
doc2.getElementById("dutymain").getElementById("topbar1").getElementsByTagName("td");
这个语句doc2.getElementById("dutymain")得到的是一个<div>
而getElementById("")是document对象才有的方法,<div>
并没有这个方法,所以doc2.getElementById("dutymain").getElementById("topbar1")应该是不对的吧!2010年1月27日 11:22
-
getElementById为空,除了这个ID不存在外,往往是因为js在该ID定义的html前就执行了的原因。
<script> // 不在function内的js getElementById("abc") // 这里会为空 </script> <div id="abc"></div> <script> // 不在function内的js getElementById("abc") // 这里不会为空 </script>
2010年1月27日 10:29
相关推荐
JavaScript,作为全球最广泛使用的编程语言之一,是构建网页交互性与动态...在实践中,不断尝试、分析和解决问题,是提升JavaScript技能的关键步骤。记得理论结合实际,多做练习,你会在JavaScript的世界里游刃有余。
6. 对象:JavaScript对象是键值对的集合,可以通过字面量方式或构造函数创建。理解属性访问和对象方法是关键。 7. 原型与继承:JavaScript采用原型链实现继承,每个对象都有一个隐含的`__proto__`属性,指向其构造...
JavaScript,简称为JS,是一种广泛应用于网页和网络应用...对于新手而言,理解并掌握这些基础概念是成为熟练JavaScript开发者的第一步。通过实践和不断学习,你将能够驾驭这门强大的脚本语言,为Web开发带来无限可能。
6. **Promise和异步编程**:JavaScript的异步编程模型,如回调函数、Promise和async/await,用于解决复杂的异步操作,避免回调地狱,提高代码可读性和维护性。 7. **ES6及后续版本的新特性**:包括箭头函数、模板...
### JavaScript新手指南知识点详解 #### 一、JavaScript简介与历史 - **定义**: JavaScript是一种轻量级的编程语言,主要用于网页交互设计,是现代Web开发不可或缺的一部分。 - **历史**: JavaScript由Netscape...
在实际工作中,遇到类似问题时,可以参考这些实例,快速找到解决方案。 这个压缩包对于初学者来说是一份宝贵的资源,可以边学边练,加深理解;对于有经验的开发者,也是复习和查找灵感的好材料。无论是想要巩固基础...
手册内容涵盖JavaScript的基础语法、对象、函数、DOM操作、事件处理、AJAX、BOM等方面,旨在帮助初学者快速上手,同时也为有经验的开发者提供参考。 1. **基础语法**:JavaScript的基础包括变量声明(var, let, ...
在探讨《JavaScript新手开发技巧》这一主题时,我们不仅会深入理解给定的代码片段,还会全面解析JavaScript的基础知识和高级技巧,旨在帮助初学者掌握这门强大的编程语言。JavaScript是一种广泛使用的脚本语言,尤其...
3. **函数**:JavaScript中的函数不仅是可调用的,也可以作为值传递,甚至可以作为对象属性或数组元素存在。函数表达式和箭头函数(ES6新增)是两种常见的定义函数的方式。 4. **对象与原型链**:JavaScript的对象...
- 字符串和日期对象:字符串对象提供了一系列用于文本操作的方法,如`indexOf()`、`replace()`等;日期对象则用于处理日期和时间,如`getDate()`、`getMonth()`等。 - 桢结构和框架窗口:JavaScript可以用来控制...
本资源是专为初学者设计的JavaScript学习资料,旨在帮助新手快速掌握这门强大的脚本语言。 JavaScript的基础知识包括以下几个方面: 1. **语法基础**:JavaScript语法与C++和Java有诸多相似之处,但更为灵活。变量...
JavaScript,简称JS,是Web开发中的重要脚本语言,它为网页添加动态功能,使得用户交互更为丰富。本文将深入探讨在5分钟内可以掌握的9大JavaScript技巧,旨在帮助初学者快速上手并提升技能。 1. 变量声明与数据类型...
JavaScript是一种广泛应用于网页和网络应用开发的脚本语言,它主要负责处理客户端的交互和动态内容。...同时,不要忘记,实践是最好的老师,理论学习的同时,多动手编写代码,解决问题,将大大加速你的成长。
它是一种解释型、弱类型、动态类型的脚本语言,由网景公司的Brendan Eich在1995年发明,起初是为了解决网页中的交互问题。尽管名字中包含了"Java",但JavaScript与Java语言并无直接关系。 本教程“Javascript教程...
JavaScript是一种广泛应用于网页和...通过查看和分析示例代码,有助于形成良好的编程习惯,并为解决实际问题提供灵感。无论你是新手还是经验丰富的开发者,这个"JavaScript源码大全+v1.0"都将是一份宝贵的参考资料。
它最初被命名为LiveScript,后来为了与Sun Microsystems的Java语言相呼应,改名为JavaScript,但两者在技术上并无直接关联。JavaScript主要负责网页的动态交互,如表单验证、页面动画、数据处理等任务。 本资源...
综上所述,这些压缩包中的JavaScript实例很可能是围绕这些基础概念和进阶特性展开的,通过学习和实践,新手可以逐步掌握JavaScript编程,实现网页交互,甚至进一步探索Node.js后端开发、React前端框架或其他...
4. **数组与对象**:JavaScript中的数组和对象是两种常用的数据结构,数组用于存储一系列值,而对象则用于存储键值对。 5. **DOM操作**:JavaScript可以操作文档对象模型(DOM),用于动态修改网页内容。例如,通过...
- 异步编程:深入理解事件循环、回调函数、Promise和async/await,解决JavaScript中的非阻塞I/O问题。 - 对象与原型:学习对象的创建、属性访问和方法调用,探讨原型链及其在继承中的作用。 - 模块系统:掌握...
JavaScript,一种广泛应用于Web开发的轻量级编程语言,是前端开发者不可或缺的工具。本教程旨在为初学者提供一个全面的JavaScript入门指南,帮助你快速掌握这一强大的脚本语言。 一、JavaScript概述 JavaScript,...