为什么这不适用于Firefox?

时间:2011-06-24 07:14:08

标签: javascript internet-explorer firefox

我有这个代码,但我只能在Internet Explorer中使用它 - 它在Firefox中不起作用:

var max1box = document.getElementById('length'),
    max2box = document.getElementById('width');
    max1 = 100;
    min1 = 20;
    max2 = 200;
    min2 = 10;

max1box.addEventListener('change',validateValues);
max2box.addEventListener('change',validateValues);

function validateValues() {

    if (this == max1box && this.value > max1 && this.value > max2box.value)
    {
       max1box = max2box; 
       max2box = this;  
    } 

    if (max1box .value > max1) {
        max1box .value = max1;
    }
    if (max1box .value < min1) {
        max1box .value = min1;
    }        

    if (max2box.value > max2) {
        max2box.value = max2;
    }
    if (max2box.value < min2) {
        max2box.value = min2;
    }
   }

http://jsfiddle.net/gdau4/

Javascript代码根本不起作用。好像我刚刚有两个普通的文本框。

我已在Firefox 3.6和Internet Explore 9中测试过它。

3 个答案:

答案 0 :(得分:4)

方法

 addEventListener

firefox中需要第三个参数,它是一个代表事件冒泡的布尔变量 你可以尝试

 max1box.addEventListener('change',validateValues,false);
 max2box.addEventListener('change',validateValues,false);

答案 1 :(得分:0)

这是getElementById实际返回的表单元素是name属性但不是id的情况之一吗?如果是这样,只需添加具有相同值的id属性,然后重试......

答案 2 :(得分:0)

你为addEventListener函数添加boolean参数,如下所示:

max1box.addEventListener('change', validateValues, false);

布尔值,指示是否在向目标节点传播事件时绑定事件(事件捕获),或者事件从目标向上冒泡(事件气泡)。分别设置为true或false。

Read more about window methods