`
远去的渡口
  • 浏览: 472920 次
  • 性别: Icon_minigender_2
  • 来自: 上海转北京
社区版块
存档分类
最新评论

IE下<p>标签对innerHTML包容支持度不够问题解决

阅读更多

   这两天遇到了一个问题,为了将日历控件与一个input type="text" 的框相对定位,所以将这个日历div用js加载到这个text框的父元素,而这个父元素是<p>标签。在IE下,日历js中,有innerHTML的地方报错了,错误信息是“未知的运行时错误”,而在FireFox下没有问题。在网上查了一下,知道是innerHTML在IE下支持不够,包容innerHTML的父元素的包容性有要求的。开始的时候,我还在考虑是不是日历js哪有错,但是其他地方也是调用同一个日历js文件,在IE下是没有问题的,所以问题不是出在日历js文件中,而应该是外层的元素对这个js有影响,所以才出这个错误。

之前的代码如下:

<div id="housecarDiv" class="dateForm clearfix">
				<form action="/hotelbooking/showFillOrder.action" id="housecarform"
					method="get">
					
						<p class="first">
							请选择日期
						</p>
						<p>
							<label>
								入住日期:
								<span></span>
							</label>
							<input type="text" name="indate" id="houseCarIndate" />

<div id="datepicker-houseCarIndate" class="datepicker" style="z-index: 1000000; left: 30px; top: 70px;">
……
//日历的代码省略
</div>
//这里是用js将这个detapicker的div加到 input[name="indate"]所在的<p>标签中。

						</p>
						<p>
							<label>
								离店日期:
								<span></span>
							</label>
							<input type="text" name="outdate1" id="houseCarOutDate"
								disabled="disabled" />
						</p>
						<%--<p><input type="submit" style="margin-left: 150px;cursor: pointer;" value="抢购"  name="submitButton"/> </p>--%>
						
							<div class="yuding">
								<button name="submitButton">
									预定
								</button>
							</div>
						
					
					<input type="hidden" name="outdate" value="${outDate}" />
					<input type="hidden" name="hotel" value="${houseCar.hotelId}" />
					<input type="hidden" name="plan" value="${houseCarRoom.roomTypeId}" />
					<input type="hidden" name="rateType" value="single" />
					<input type="hidden" name="searchFrom" value="${refererHost}" />

				</form>
			</div>
 

 

将<p></p>包裹的内容用<ul><li>后就ok了,改后的代码如下:

<div id="housecarDiv" class="dateForm clearfix">
				<form action="/hotelbooking/showFillOrder.action" id="housecarform"
					method="get">
					<ul>
						<li class="first">

							请选择日期
						</li>
						<li>

							<label>
								入住日期:
								<span></span>
							</label>
							<input type="text" name="indate" id="houseCarIndate" />
<div id="datepicker-houseCarIndate" class="datepicker" style="z-index: 1000000; left: 30px; top: 70px;">
……
//日历的代码省略
</div>
//这里是用js将这个detapicker的div加到 input[name="indate"]所在的<li>标签中。
 </li>
						<li>

							<label>
								离店日期:
								<span></span>
							</label>
							<input type="text" name="outdate1" id="houseCarOutDate"
								disabled="disabled" />
						</li>

						<%--<p><input type="submit" style="margin-left: 150px;cursor: pointer;" value="抢购"  name="submitButton"/> </p>--%>
						<li>

							<div class="yuding">
								<button name="submitButton">
									预定
								</button>
							</div>
						</li>
					</ul>

					<input type="hidden" name="outdate" value="${outDate}" />
					<input type="hidden" name="hotel" value="${houseCar.hotelId}" />
					<input type="hidden" name="plan" value="${houseCarRoom.roomTypeId}" />
					<input type="hidden" name="rateType" value="single" />
					<input type="hidden" name="searchFrom" value="${refererHost}" />

				</form>
			</div>
 

  这个bug解决的时间比较长,花了好几个小时,最开始的时候我在calendar.js日历文件中debug,因为这个js是引用第三方的,很复杂,看了很久,找到问题在innerHTML上,但是基本上没有无从修改。另外,同一个js,在另外引用的地方,在IE里都是没有问题的,从这个可以看出,应该不是这个calendar.js内部的问题,而是包容它的外层元素影响了它,所以我就试着将<p>改为div,结果这个“未知的运行时错误”就没有了,在IE的左下角没有出现“!完成,但网页上有错误” ,只是因为日历本身也是div包裹的,所以位置有点不对,但是这个错误没有再现,就说明<p>标签导致calendar.js中的innerHTML一行报错。知道问题所在就好办了,避开div,span(因为这个div中其他地方也有使用,样式会有影响),所以将p所有的样式加到ul li上,将标签改完以后,就没报错了,并且定位也没有影响了,bug彻底解决了!

1
1
分享到:
评论
1 楼 sohighthesky 2010-05-23  
什么 情况下才会不支持呢?

相关推荐

    向元素中动态添加option

    这篇博客“向&lt;select&gt;元素中动态添加option”探讨的就是如何在JavaScript或jQuery的帮助下,实现在用户界面中动态地向`&lt;select&gt;`元素添加选项。 JavaScript是一种广泛使用的客户端脚本语言,它可以操作HTML元素,...

    html 表单排序

    而当我们谈论`&lt;table&gt;`表单排序时,我们通常是指如何对`&lt;table&gt;`中的数据行进行升序或降序排列,以便用户可以更有效地浏览和分析信息。这在大型数据集或动态更新的数据中尤其有用。 ### 1. `&lt;table&gt;`的基本结构 一...

    解决ajax返回innerHTML中javascript不能运行问题

    要解决这个问题,最基本的方法就是需要让浏览器可以同时解析 `&lt;div&gt;` 标签中的 js。如果单适用 IE 浏览器,最简单的方式就是在 `&lt;div&gt;` 中的 `&lt;script&gt;` 标签中添加属性 `defer`,它可以通知 IE 该脚本需要异步解析...

    上标下标的实现

    &lt;p&gt;氢气的分子式为H&lt;sub&gt;2&lt;/sub&gt;&lt;/p&gt; &lt;p&gt;平方根是x&lt;sup&gt;2&lt;/sup&gt;&lt;/p&gt; ``` 在CSS中,可以通过设置`vertical-align`属性来实现类似效果,但这通常不如直接使用HTML标签简洁明了。 2. JavaScript 实现 在JavaScript中,...

    【前端】<div>的排版练习【HTML+CSS+JavaScript(JS)】

    这些GIF图片可以被用作`&lt;img&gt;`标签的`src`属性,添加到`&lt;div&gt;`中以增强视觉效果。 总结起来,这个练习旨在通过HTML的`&lt;div&gt;`标签,配合CSS的布局技巧和JavaScript的交互功能,提高开发者对前端排版的理解和实践能力...

    HTML5 对各个标签的定义与规定:header

    - **局部头部**:当`&lt;header&gt;`被放置在`&lt;section&gt;`或`&lt;article&gt;`等标签内时,则表示这部分内容的头部信息。例如,在文章的开始部分可以有一个小标题,用以介绍文章的主题,这时可以使用`&lt;header&gt;`标签。 #### 使用...

    Vue中插入HTML代码的方法

    我们需要吧&lt;p&gt;Hello World&lt;/p&gt;插入到&lt;p&gt;My name is Pjee&lt;/p&gt;应该如何做? 一、使用v-html v-html:更新元素的 innerHTML const text = `&lt;p&gt;Hello World&lt;/&gt;` &lt;p&gt; My name is Pjee &lt;p v-html='text'&gt;&lt;/p&gt; &lt;/p&gt; ...

    s标签的应用和题目,程序演示

    答案:通过JavaScript,可以访问并修改`&lt;s&gt;`标签的`innerHTML`属性来改变内容,以及`style`属性来调整样式。例如: ``` var deletedItem = document.querySelector('s'); deletedItem.innerHTML = '新内容'; ...

    使用js实现 年月日绑定html 控件上

    3. **事件监听:** 为每个`&lt;select&gt;`元素添加事件监听器,以便在用户选择时更新其他两个`&lt;select&gt;`元素的选项。 4. **日期计算:** 通过JavaScript计算每个月的具体天数,并据此更新日期`&lt;select&gt;`元素的选项。 ###...

    js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法

    本文实例讲述了js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法。分享给大家供大家参考。具体分析如下: 问题描述: 网站中使用了一个js插件,设置innerHTML时,在IE8下报错“未知运行时错误”: &lt;div...

    html_网页的简介

    &lt;p id="d"&gt; JavaScript点击会触发! &lt;/p&gt; &lt;script&gt; function myfn() { a=document.getElementById("d"); a.innerHTML="Hello Word!"; a.style.color="blue"; } &lt;/script&gt; &lt;button type="button" onclick="myfn()"&gt;...

    Web编程技术(html)

    表格使用`&lt;TABLE&gt;`、`&lt;TR&gt;`和`&lt;TD&gt;`标签创建。例如: ```html &lt;TABLE border="1"&gt; &lt;TR&gt; &lt;TD&gt;第一行第一列&lt;/TD&gt; &lt;TD&gt;第一行第二列&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD&gt;第二行第一列&lt;/TD&gt; &lt;TD&gt;第二行第二列&lt;/TD&gt; &lt;/TR&gt; &lt;/...

    JavaScript学习笔记.pdf

    &lt;/p&gt;&lt;button type="button" onclick="myFunction()"&gt;点击这里&lt;/button&gt;&lt;script&gt;function myFunction(){document.getElementById("demo").innerHTML="我的第一个 JavaScript 函数";}&lt;/script&gt;&lt;/body&gt; 4、外部的 ...

    HTML全组总结

    例如,&lt;canvas&gt;元素用于绘制图形,&lt;audio&gt;和&lt;video&gt;用于播放音频和视频,&lt;section&gt;、&lt;article&gt;、&lt;aside&gt;等语义化标签提高了网页的可读性和SEO优化。 样式控制是通过CSS(Cascading Style Sheets)实现的,它可以...

    静态HTML旅行主题网页设计与实现——联途旅游网服务平台网(39页)HTML+CSS+JavaScript

    - **基础标签**: `&lt;header&gt;`、`&lt;nav&gt;`、`&lt;main&gt;`、`&lt;section&gt;`、`&lt;article&gt;`、`&lt;footer&gt;`等,用于定义页面的不同部分。 - **多媒体标签**: `&lt;img&gt;`、`&lt;video&gt;`、`&lt;audio&gt;`,用于插入图片、视频和音频等媒体元素。 - ...

    HTML考试题

    10. **跨浏览器兼容性**: 不同浏览器可能对HTML特性支持程度不同,开发者需要考虑IE、Chrome、Firefox、Safari等浏览器间的差异,使用条件注释或polyfill库解决兼容问题。 通过学习和理解以上知识点,并结合实际...

    HTML教程全集

    每个元素都有其特定的含义,例如`&lt;title&gt;`用于设置页面标题,`&lt;h1&gt;`到`&lt;h6&gt;`定义不同级别的标题,`&lt;p&gt;`代表段落。 二、HTML文本格式化 HTML提供多种元素来格式化文本,如`&lt;b&gt;`(粗体)、`&lt;i&gt;`(斜体)、`&lt;u&gt;`...

    WEB开发 之JavaScript 使用.docx

    首先,JavaScript代码必须包裹在`&lt;script&gt;`和`&lt;/script&gt;`标签内,这些标签定义了JavaScript的起始和结束位置。例如: ```html &lt;script&gt; alert('My First JavaScript'); &lt;/script&gt; ``` 在这个例子中,浏览器会解析并...

    HTML基础学习

    例如,`&lt;h1&gt;`到`&lt;h6&gt;`用于创建标题,`&lt;p&gt;`用于创建段落,`&lt;a&gt;`用于创建超链接。`&lt;img&gt;`标签用于插入图像,它的`src`属性指定图片的URL,`alt`属性提供图片无法显示时的替代文本。`&lt;table&gt;`元素用于创建表格,通过`...

    HTML语言教程文本.rar

    每个元素都有开始标签和结束标签,例如`&lt;p&gt;`和`&lt;/p&gt;`代表一个段落。HTML5,作为当前广泛使用的版本,引入了许多新元素,以更好地表达页面内容的语义,如`&lt;header&gt;`、`&lt;nav&gt;`、`&lt;article&gt;`和`&lt;footer&gt;`等。 在HTML中...

Global site tag (gtag.js) - Google Analytics