这两天遇到了一个问题,为了将日历控件与一个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彻底解决了!
分享到:
相关推荐
这篇博客“向<select>元素中动态添加option”探讨的就是如何在JavaScript或jQuery的帮助下,实现在用户界面中动态地向`<select>`元素添加选项。 JavaScript是一种广泛使用的客户端脚本语言,它可以操作HTML元素,...
而当我们谈论`<table>`表单排序时,我们通常是指如何对`<table>`中的数据行进行升序或降序排列,以便用户可以更有效地浏览和分析信息。这在大型数据集或动态更新的数据中尤其有用。 ### 1. `<table>`的基本结构 一...
要解决这个问题,最基本的方法就是需要让浏览器可以同时解析 `<div>` 标签中的 js。如果单适用 IE 浏览器,最简单的方式就是在 `<div>` 中的 `<script>` 标签中添加属性 `defer`,它可以通知 IE 该脚本需要异步解析...
<p>氢气的分子式为H<sub>2</sub></p> <p>平方根是x<sup>2</sup></p> ``` 在CSS中,可以通过设置`vertical-align`属性来实现类似效果,但这通常不如直接使用HTML标签简洁明了。 2. JavaScript 实现 在JavaScript中,...
这些GIF图片可以被用作`<img>`标签的`src`属性,添加到`<div>`中以增强视觉效果。 总结起来,这个练习旨在通过HTML的`<div>`标签,配合CSS的布局技巧和JavaScript的交互功能,提高开发者对前端排版的理解和实践能力...
- **局部头部**:当`<header>`被放置在`<section>`或`<article>`等标签内时,则表示这部分内容的头部信息。例如,在文章的开始部分可以有一个小标题,用以介绍文章的主题,这时可以使用`<header>`标签。 #### 使用...
我们需要吧<p>Hello World</p>插入到<p>My name is Pjee</p>应该如何做? 一、使用v-html v-html:更新元素的 innerHTML const text = `<p>Hello World</>` <p> My name is Pjee <p v-html='text'></p> </p> ...
答案:通过JavaScript,可以访问并修改`<s>`标签的`innerHTML`属性来改变内容,以及`style`属性来调整样式。例如: ``` var deletedItem = document.querySelector('s'); deletedItem.innerHTML = '新内容'; ...
3. **事件监听:** 为每个`<select>`元素添加事件监听器,以便在用户选择时更新其他两个`<select>`元素的选项。 4. **日期计算:** 通过JavaScript计算每个月的具体天数,并据此更新日期`<select>`元素的选项。 ###...
本文实例讲述了js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法。分享给大家供大家参考。具体分析如下: 问题描述: 网站中使用了一个js插件,设置innerHTML时,在IE8下报错“未知运行时错误”: <div...
<p id="d"> JavaScript点击会触发! </p> <script> function myfn() { a=document.getElementById("d"); a.innerHTML="Hello Word!"; a.style.color="blue"; } </script> <button type="button" onclick="myfn()">...
表格使用`<TABLE>`、`<TR>`和`<TD>`标签创建。例如: ```html <TABLE border="1"> <TR> <TD>第一行第一列</TD> <TD>第一行第二列</TD> </TR> <TR> <TD>第二行第一列</TD> <TD>第二行第二列</TD> </TR> </...
</p><button type="button" onclick="myFunction()">点击这里</button><script>function myFunction(){document.getElementById("demo").innerHTML="我的第一个 JavaScript 函数";}</script></body> 4、外部的 ...
例如,<canvas>元素用于绘制图形,<audio>和<video>用于播放音频和视频,<section>、<article>、<aside>等语义化标签提高了网页的可读性和SEO优化。 样式控制是通过CSS(Cascading Style Sheets)实现的,它可以...
- **基础标签**: `<header>`、`<nav>`、`<main>`、`<section>`、`<article>`、`<footer>`等,用于定义页面的不同部分。 - **多媒体标签**: `<img>`、`<video>`、`<audio>`,用于插入图片、视频和音频等媒体元素。 - ...
10. **跨浏览器兼容性**: 不同浏览器可能对HTML特性支持程度不同,开发者需要考虑IE、Chrome、Firefox、Safari等浏览器间的差异,使用条件注释或polyfill库解决兼容问题。 通过学习和理解以上知识点,并结合实际...
每个元素都有其特定的含义,例如`<title>`用于设置页面标题,`<h1>`到`<h6>`定义不同级别的标题,`<p>`代表段落。 二、HTML文本格式化 HTML提供多种元素来格式化文本,如`<b>`(粗体)、`<i>`(斜体)、`<u>`...
首先,JavaScript代码必须包裹在`<script>`和`</script>`标签内,这些标签定义了JavaScript的起始和结束位置。例如: ```html <script> alert('My First JavaScript'); </script> ``` 在这个例子中,浏览器会解析并...
例如,`<h1>`到`<h6>`用于创建标题,`<p>`用于创建段落,`<a>`用于创建超链接。`<img>`标签用于插入图像,它的`src`属性指定图片的URL,`alt`属性提供图片无法显示时的替代文本。`<table>`元素用于创建表格,通过`...
每个元素都有开始标签和结束标签,例如`<p>`和`</p>`代表一个段落。HTML5,作为当前广泛使用的版本,引入了许多新元素,以更好地表达页面内容的语义,如`<header>`、`<nav>`、`<article>`和`<footer>`等。 在HTML中...