document.getElementById会破坏代码

时间:2014-02-24 04:26:44

标签: javascript post methods getelementbyid

的JavaScript

document.write(screen.width+'x'+screen.height);

var screenres='test';
document.write(screenres);
document.write('BBBBBBBBBBBBBBBBBBBBBBBBBBBB');

document.getElementById('resolutionfield').value = screenres;
document.write(screenres);
document.write('AAAAAAAAAAAAAAAAA');

我正在尝试获取用户屏幕分辨率并将其传递给HTML post方法。如果我通过在其前面添加两个斜杠来禁用1368x768testBBBBBBBBBBBBBBBBBBBBBBBBBBBB行,则此代码段仅打印document.getElementById,它会完美地打印出所有内容。

的JavaScript

document.write(screen.width+'x'+screen.height);

var screenres='test';
document.write(screenres);
document.write('BBBBBBBBBBBBBBBBBBBBBBBBBBBB');

//document.getElementById('resolutionfield').value = screenres;
document.write(screenres);
document.write('AAAAAAAAAAAAAAAAA');

过去4个小时我一直在玩这个游戏。这可能是一个简单的问题,但我无法弄明白。

在我的代码中进一步下载

document.getElementById('secondsfield').value = seconds;
document.getElementById('minutesfield').value = minutes;
document.getElementById('hoursfield').value = hours;

这些变量会毫无问题地传递到post方法

HTML

<input type="hidden" id="usersipaddress" name="usersipaddress" value= "<?php echo $_SERVER['REMOTE_ADDR'];?>" >
<input type="hidden" id="secondsfield" name="secondsfield" value="" >
<input type="hidden" id="minutesfield" name="minutesfield" value="" >
<input type="hidden" id="hoursfield" name="hoursfield" value="" >
<input type="hidden" id="resolutionfield" name="resolutionfield" value="screenres" >

有人对此有答案吗?

1 个答案:

答案 0 :(得分:4)

如果这一行:

document.getElementById('resolutionfield').value = screenres;

在解析resolutionfield DOM元素之前太早执行,因此存在于DOM中,然后这将导致错误并停止执行脚本。那是因为:

document.getElementById('resolutionfield')

将为null,然后当您尝试引用.value属性时,它将无效并将生成错误Uncaught TypeError: Cannot set property 'value' of null,您可以在浏览器的错误控制台或调试中看到该错误控制台。