我有这行代码适用于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吗?
答案 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>
这是querySelector
与name
:
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">