Javascript在Chrome和Firefox上不起作用,但适用于IE

时间:2014-10-06 14:41:04

标签: javascript html google-chrome

我有这行代码适用于IE

使用Javascript:

function getInfo() {
    var date = new Date(date);
    var month = date.getMonth();
    var test = "print";
    document.getElementById('lol').value = month;
}

体:

<input type=text name=lol>
<input type=button onClick=getInfo() value=lol>

适用于IE,但不适用于Chrome和Firefox。 Chrome和Firefox有不同的Javascript吗?

3 个答案:

答案 0 :(得分:3)

getElementById用于按id 查找元素。您的输入没有id,只有name。您的代码适用于IE,因为(某些版本)IE are confused并返回name属性getElementById的元素。这是IE中的一个错误。

要解决此问题,请在输入中添加id="lol"

<input type=text name=lol id=lol>
<input type=button onClick=getInfo() value=lol>

...或使用querySelector("[name=lol]")

document.querySelector('[name=lol]').value = month;

querySelector返回它可以找到的与给定CSS选择器匹配的第一个元素。它适用于所有现代浏览器和IE8。

另外:您的代码正在将undefined传递到Date构造函数中,此处:

var date = new Date(date);

...因为该代码实际上是:

var date;
date = new Date(date);

...变量以值undefined开始。

在具有符合标准的JavaScript引擎的浏览器上,最终会出现无效日期,因为规范要求引擎将参数转换为数字,然后将其用作底层“时间值”(毫秒) - 由于-的历元)。将undefined转换为数字会产生NaN(“不是数字”);使用NaN作为“时间值”的日期称为无效日期。使用getMonth及其类似内容会返回NaN

如果您想要当前日期,请不要使用该参数:

var date = new Date();

以下是您的代码的工作版本(经过最少的修改)使用id而未将undefined传递到Date

function getInfo() {
    var date = new Date();
    var month = date.getMonth();
    var test = "print";
    document.getElementById('lol').value = month;
}
<input type=text name=lol id=lol>
<input type=button onClick=getInfo() value=lol>

这是querySelectorname

一起使用的function getInfo() { var date = new Date(); var month = date.getMonth(); var test = "print"; document.querySelector('[name=lol]').value = month; }

<input type=text name=lol>
<input type=button onClick=getInfo() value=lol>
onClick


附注:我确实会将"属性的内容放在引号中,因为它包含非字母数字字符。根据{{​​3}},您的标记正常工作,并且适用于Chrome(未加引号的语法只允许空格,'<>`和{{1}}),但是......

答案 1 :(得分:0)

我建议使用Jquery

<input type=text id="somethingElse">
<input type=button id="something">


$( "#something" ).click(function() {
    var currentMonth = (new Date).getMonth() + 1;
    $( "#somethingElse" ).val(currentMonth);
});

答案 2 :(得分:-1)

您错过了引号以及id

<input type="text" id="lol" name="lol">
<input type="button" onClick="getInfo();" value="lol">