在 IE8 中接收无效参数
Receiving Invalid Argument in IE8
我已经盯着这个几个小时了,真的需要一些帮助。我正在为电影院网站使用一些现有代码,以下内容应该填充一个选择列表,其中包含从今天到xml文件中最大日期的日期。
function populateSelect(xmlDoc, elSel) {
var dmindate = new Date();
var showings = xmlDoc.getElementsByTagName('Session');
fmaxdate = "";
for (var showing = 0; showing < showings.length; showing++) {
if (retText(showings[showing].getElementsByTagName('Date_time')[0]) > fmaxdate) {
fmaxdate=retText(showings[showing].getElementsByTagName('Date_time')[0]);//get the Max Date
}
}
var dmaxdate = new Date.parseString(fmaxdate, "yyyyMMddHHmmss");
while(dmindate <= dmaxdate){ //Fill in the Select List
var elOptNew = document.createElement('option');
elOptNew.text = dmindate.format("EE NNN d, yyyy");
elOptNew.value = dmindate.format("MM/dd/yyyy");
dmindate.setDate(dmindate.getDate()+1);
try {
elSel.add(elOptNew, null); // standards compliant doesn't work in IE
}
catch(ex) {
elSel.add(elOptNew); // IE only
}
}
}
这在FF,Chrome和Safari中工作得很好,但是IE8不显示带有日期的下拉列表,并且显示无效参数与try的右括号相同。
任何帮助将不胜感激!
Date.prototype.parseString
或format
方法从何而来,大概您正在添加一些日期库。它们不是 ECMAScript ed 3 或 5 的一部分。
您可以替换以下行:
> var elOptNew = document.createElement('option');
> elOptNew.text =dmindate.format("EE NNN d, yyyy");
> elOptNew.value = dmindate.format("MM/dd/yyyy");
跟:
var elOptNew = new Option(dmindate.format("EE NNN d, yyyy"), // option text
dmindate.format("MM/dd/yyyy")); // option value
然后将其添加到选择:
elSel.appendChild(elOptNew);
以上内容适用于所有版本的IE和其他浏览器。有关 Option 构造函数的详细信息,请参阅 http://dev.w3.org/html5/spec/single-page.html#the-option-element。
编辑
在 add 方法的 DOM 2 HTML 规范中,它说:
此方法等效于节点的 appendChild 方法。 接口(如果 before 参数为空)。
这并不意味着传递 ECMAScript null
对象,它意味着"如果没有第二个参数"。该规范是语言中立的,它不是特定于JavaScript的。HTML5 OptionsCollection add 方法是相同的(即"null"表示没有参数,而不是 javascript null
对象)。
从我能找到的文档中,使用 null 参数没有任何意义。但是,很明显,不同浏览器中的 JavaScript 引擎处理此方法的方式不同,并且 IE 不喜欢将null
作为第二个参数。
所以,按照口头禅,你应该使用jQuery。它很好,做所有事情。它实际上确实有助于保护您免受 DOM 浏览器实现之间的差异,因为它具有相当广泛的兼容性。 无论如何,它解决了这家伙的问题。
您可能希望使用append()
而不是add()
。例如:
var elOptNew = $('<option></option>');
...
elSel.append(elOptNew);
还有另一种方法可以在选择中添加新选项,即
var opts = elSel.options;
opts[opts.length] = new Option(dmindate.format("EE NNN d, yyyy"), dmindate.format("MM/dd/yyyy"));
适用于所有 mejor 浏览器的示例。
尝试使用
elSel.options.add(elOptNew)
这必须在所有浏览器中工作。请参阅示例。
- 在 IE8 中接收无效参数
- 在JavaScript中测试一个无效参数w/Chai
- IE10+上的AngularJS,带有占位符原因的文本区域“;无效参数&”;
- 是“;论点”;JavaScript中的无效参数名称
- window.open 在 IE 中抛出无效参数错误
- D3:在 IE9 中使用 d3.js 出现“无效参数”错误
- 谷歌地图api v3-IE7-main.js错误-无效参数(javascript)
- Javascript:Uint16Array(length)返回无效参数
- 在IE8中调整窗口大小时JQuery/Javascript无效参数脚本错误
- 无效参数.即7-8
- IE8'无效参数'在小jQuery动画片段中
- IE8出现JavaScript无效参数错误
- 窗口.在Javascript中打开无效参数
- InvokeScript工作,但网页回复“无效参数”
- 为什么自定义函数在IE8中说无效参数
- IE8中变量对象属性的无效参数问题
- JavaScript +无效参数错误与fireEvent('onchange')
- IE eventDispatch() SCRIPT87:无效参数.错误
- XMLHttpRequest无效参数
- Js-ctypes无效参数