Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript SCRIPT5007:无法设置属性的值';值';:对象为null或未定义_Javascript_Internet Explorer - Fatal编程技术网

Javascript SCRIPT5007:无法设置属性的值';值';:对象为null或未定义

Javascript SCRIPT5007:无法设置属性的值';值';:对象为null或未定义,javascript,internet-explorer,Javascript,Internet Explorer,我在网站上有以下JS费用计算器: 函数updateOutput(){ //形成 var form=document.getElementById('calc'); var x=form.elements['x'].value; x=x。替换(/,/g,“”); //确定乘数 如果(x>11111&&x=83333&&x=166667&&x=250000){ y=0.005; } //添加数据插件 if(form.elements['pd'].checked==true){ p=250; } 否

我在网站上有以下JS费用计算器:

函数updateOutput(){
//形成
var form=document.getElementById('calc');
var x=form.elements['x'].value;
x=x。替换(/,/g,“”);
//确定乘数
如果(x>11111&&x<83333){
y=0.009;
}
如果(x>=83333&&x<166667){
y=0.007;
}
如果(x>=166667&&x<250000){
y=0.006;
}
如果(x>=250000){
y=0.005;
}
//添加数据插件
if(form.elements['pd'].checked==true){
p=250;
}
否则{
p=0;
}
//计算每月价格
如果(x>11111){
form.elements['z'].value=Math.round(eval(parseInt(x,10)*y+p));
}
否则{
form.elements['z'].value=Math.round(eval(100+p));
}
}​
如果您输入“12000”(或大于11111的数字),它将在FF、Chrome和Safari中正确计算

我无法让它在IE中工作。输入值后,它会抛出以下错误:

SCRIPT5007:无法设置属性“value”的值:对象为null或未定义

我已经多次看到这个错误,但是所有的解决方案都与.Net或嵌入Flash有关


任何帮助都将不胜感激…提前感谢

IE似乎没有在
表单中包含元素。元素
集合,因此
表单。元素['z']
在IE中是
未定义的(如果单击链接,您将看到
在IE10之前不受支持)。其他浏览器在
元素
集合中包含


要么将
z
设置为只读
,要么给你的
一个
id
,然后与
文档一起获取。getElementById

挑剔:你应该使用
否则如果
function updateOutput() {

//get form 
var form = document.getElementById('calc');
var x = form.elements['x'].value;
x = x.replace(/,/g, "");

// determine multiplier
if (x > 11111 && x < 83333) {
    y = 0.009;
}
if (x >= 83333 && x < 166667) {
    y = 0.007;
}
if (x >= 166667 && x < 250000) {
    y = 0.006;
}
if (x >= 250000) {
    y = 0.005;
}

// add data addon
if (form.elements['pd'].checked === true) {
    p = 250;
}
else {
    p = 0;
}

// calculate monthly price
if (x > 11111) {
    form.elements['z'].value = Math.round(eval(parseInt(x, 10) * y + p));
}
else {
    form.elements['z'].value = Math.round(eval(100 + p));
}
}​