Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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不在IE9上运行,但每隔一个浏览器运行一次?什么';怎么了?_Javascript_Html - Fatal编程技术网

JavaScript不在IE9上运行,但每隔一个浏览器运行一次?什么';怎么了?

JavaScript不在IE9上运行,但每隔一个浏览器运行一次?什么';怎么了?,javascript,html,Javascript,Html,我一直在开发这个小应用程序,它在我可以尝试的每个浏览器中都能正常工作(我在Mac电脑上),我尝试过Firefox、Chrome、Opera和Safari,它都能正常工作。我把它发给了一位同事(他使用电脑),他说它可以在Chrome、Firefox和Opera上使用,但不能在IE9上使用 我让另一位同事试用了它,他说它可以在Chrome上运行,但不能在IE9上运行 到目前为止,它似乎适用于除IE9之外的所有浏览器。另一位同事说,第一次使用Chrome时,它只是刷新了屏幕,然后他重新输入了所有内容,

我一直在开发这个小应用程序,它在我可以尝试的每个浏览器中都能正常工作(我在Mac电脑上),我尝试过Firefox、Chrome、Opera和Safari,它都能正常工作。我把它发给了一位同事(他使用电脑),他说它可以在Chrome、Firefox和Opera上使用,但不能在IE9上使用

我让另一位同事试用了它,他说它可以在Chrome上运行,但不能在IE9上运行

到目前为止,它似乎适用于除IE9之外的所有浏览器。另一位同事说,第一次使用Chrome时,它只是刷新了屏幕,然后他重新输入了所有内容,之后即使重复使用,它也能正常工作

有人能告诉我它出了什么问题吗?这是我第一个真正使用的应用程序,如果这个问题对每个人来说都很明显,我很抱歉

<html>
<head>
<title>Daily Calorie Limit</title>

</head>
<body>

<script type="text/javascript" language="javascript">

function Calculate() {

    var gender = document.getElementById("gender").value;
    var weight = document.getElementById("weight").value;
    var inches = parseInt(document.getElementById("inches").value, 10);
    var height = (parseInt(document.getElementById("feet").value, 10) * 12) + inches;
    var age = document.getElementById("age").value;
    var goal = document.getElementById("goal").value;


    if(gender=="male") 
        {
            val1 = 6.23 * weight;
            val2 = 12.7 * height;
            val3 = 6.8 * age;
            dailyDeficit = (goal * 3500) / 90;

            result = 66 + val1 + val2 - val3;

            cals = result * 1.55;
            calMax = cals - dailyDeficit;

        }
    else if (gender=="female")
        {
            val1 = 6.23 * weight;
            val2 = 4.7 * height;
            val3 = 4.7 * age;
            dailyDeficit = (goal * 3500) / 90;

            result = 655 + val1 + val2 - val3;

            cals = result * 1.55;
            calMax = cals - dailyDeficit;
        }


document.getElementById("answer").textContent = 'Your Daily Calorie Limit is: ' + calMax.toFixed(0); 

}




</script>

<form action="#">
    Gender  : <select id="gender"><option value="male">Male</option><option value="female">Female</option></select><br />
    Weight  : <input type="text" id="weight" />lbs.<br />
    Height  : <input type="text" id="feet" />ft. <input type="text" id="inches" />in.<br />
    Age     : <input type="text" id="age" /><br />
    Goal    : <select id="goal"><option value=5>Lose 5 Pounds</option><option value=10>Lose 10 Pounds</option><option value=15>Lose 15 Pounds</option><option value=20>Lose 20 Pounds</option><option value=25>Lose 25 Pounds</option></select><br />


    </fieldset>
    <input type="submit" value="Give me my Daily Calorie Limit!" onclick="Calculate()" />
</form>
<div id="answer"></div>

</body>
</html>

每日热量限制
函数计算(){
var-gender=document.getElementById(“性别”).value;
var-weight=document.getElementById(“weight”).value;
var inches=parseInt(document.getElementById(“inches”).value,10);
变量高度=(parseInt(document.getElementById(“英尺”).value,10)*12)+英寸;
var age=document.getElementById(“age”).value;
var-goal=document.getElementById(“目标”).value;
如果(性别=“男性”)
{
val1=6.23*重量;
val2=12.7*高度;
val3=6.8*年龄;
每日赤字=(目标*3500)/90;
结果=66+val1+val2-val3;
cals=结果*1.55;
calMax=cals-每日赤字;
}
否则,如果(性别=“女性”)
{
val1=6.23*重量;
val2=4.7*高度;
val3=4.7*年龄;
每日赤字=(目标*3500)/90;
结果=655+val1+val2-val3;
cals=结果*1.55;
calMax=cals-每日赤字;
}
document.getElementById(“answer”).textContent='您的每日热量限制为:'+calMax.toFixed(0);
}
性别:男性女性
重量:磅
高度:英尺英寸。
年龄:
目标:减掉5磅10磅15磅20磅25磅

我想我发现了问题所在:您使用
textContent
设置DIV的内容。Internet Explorer不支持此类属性(欢迎加入IE仇恨者俱乐部)。尝试将
textContent
替换为
nodeValue
,它具有更好的跨浏览器兼容性。

我想我发现了问题所在:您使用
textContent
设置DIV的内容。Internet Explorer不支持此类属性(欢迎加入IE仇恨者俱乐部)。尝试将
textContent
替换为
nodeValue
,它具有更好的跨浏览器兼容性。

我发现您的脚本存在以下问题:

  • 并非每个浏览器都支持
    .textContent
    。IE使用
    .innerText
    。使用
    .innerHTML
    可能是最简单的方法,它可以在任何地方工作
  • 您的按钮是“提交”按钮,因此按下后页面将重新加载
  • 您的许多变量都未声明,因此它们是隐式全局变量(错误)
  • 您有一个
    标记,但没有匹配的

  • 这里有一个固定的工作版本:

    我发现您的脚本存在以下问题:

  • 并非每个浏览器都支持
    .textContent
    。IE使用
    .innerText
    。使用
    .innerHTML
    可能是最简单的方法,它可以在任何地方工作
  • 您的按钮是“提交”按钮,因此按下后页面将重新加载
  • 您的许多变量都未声明,因此它们是隐式全局变量(错误)
  • 您有一个
    标记,但没有匹配的

  • 这里有一个固定且有效的版本:

    其他人给了你答案,一些评论和建议,使用你想要的,忽略你不需要的:

  • 表单控件必须具有成功的名称(即与表单一起提交)
  • 除非您使用XML或XHTML并以application/XML的形式发送文档,否则不需要XML样式的标记(极不可能)
  • 脚本元素的语言属性在HTML4中已被弃用,它已从HTML5中删除
  • 按照惯例,以大写字母开头的变量名是为构造函数保留的
  • 当对字符串应用除“+”以外的数学运算时,它将被转换为数字,并且可以使用一元“+”代替parseInt
  • 可以使用Math.round代替toFixed(0)
  • val2、val3和result的因子可以根据所选性别进行设置,去掉if..else语句
  • 选择元素中的一个选项应设置为默认选定项
  • 可以整理和重构代码以消除冗余:

    <script type="text/javascript">
    
    function calculate() {
        var form   = document.forms['f0'];
        var height = form.feet.value * 12 + +form.inches.value;
        var factor = form.gender.value == 'male'? [12.7, 6.8, 66] : [4.7, 4.7, 655];
    
        var val1 = 6.23 * form.weight.value;
        var val2 = factor[0] * height;
        var val3 = factor[1] * form.age.value;
        var result = factor[2] + val1 + val2 - val3;
    
        dailyDeficit = form.goal.value * 3500 / 90;
        calMax = result * 1.55 - dailyDeficit;
    
        document.getElementById("answer").innerHTML = 'Your Daily Calorie Limit is: ' +
                                                       calMax.toFixed(0); 
    }
    
    </script>
    
    <form action="#" id="f0">
        Gender  : <select id="gender">
                   <option value="male">Male
                   <option value="female">Female
                  </select>
                  <br>
        Weight  : <input type="text" id="weight">lbs.
                  <br>
        Height  : <input type="text" id="feet">ft. <input type="text" id="inches">in.
                  <br>
        Age     : <input type="text" id="age">
                  <br>
        Goal    : <select id="goal">
                    <option value="5">Lose 5 Pounds
                    <option value="10">Lose 10 Pounds
                    <option value="15">Lose 15 Pounds
                    <option value="20">Lose 20 Pounds
                    <option value="25">Lose 25 Pounds
                  </select>
                  <br>
                  <input type="button" value="Give me my Daily Calorie Limit!"
                         onclick="calculate()">
    </form>
    <div id="answer"></div>
    
    
    函数计算(){
    var form=document.forms['f0'];
    变量高度=form.feet.value*12++form.inches.value;
    var factor=form.gender.value==“男性”?[12.7,6.8,66]:[4.7,4.7,655];
    var val1=6.23*形式重量值;
    var val2=系数[0]*高度;
    var val3=系数[1]*form.age.value;
    var结果=因子[2]+val1+val2-val3;
    每日赤字=form.goal.value*3500/90;
    calMax=结果*1.55-每日赤字;
    document.getElementById(“answer”).innerHTML='您的每日热量限制为:'+
    卡氏指数(0);
    }
    性别:
    男性
    女性
    
    体重:磅。
    高度:英尺英寸。
    年龄:
    目标: 减掉5磅 减掉10磅 减掉15磅 减掉20磅 减掉25磅

    其他人给了你答案,一些评论和建议,使用你想要的,忽略什么