写了一段js。在chrome里可用,但是在firefox和ie内核的浏览器不可以用。我知道是兼容性问题,帮改,见详细

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了写了一段js。在chrome里可用,但是在firefox和ie内核的浏览器不可以用。我知道是兼容性问题,帮改,见详细相关的知识,希望对你有一定的参考价值。

function SumNum()

var sumValue
a=eval(TextBox2.value);
b=eval(TextBox3.value);
c=eval(TextBox4.value);
d=eval(TextBox5.value);
e=eval(TextBox6.value);
if (isNaN(a))

a=0;

if(a>eval(TextBox31.value)

alert("此项评分不能超过该项最高分!");
self['TextBox2'].value = 0;

if (isNaN(b))

b=0;

if(b>eval(TextBox32.value))

alert("此项评分不能超过该项最高分!");
self['TextBox3'].value = 0;

if (isNaN(c))

c=0;

if(c>eval(TextBox33.value))

alert("此项评分不能超过该项最高分!");
self['TextBox4'].value = 0;

if (isNaN(d))

d=0;

if(d>eval(TextBox34.value))

alert("此项评分不能超过该项最高分!");
self['TextBox5'].value = 0;

if (isNaN(e))

e=0;

if(e>eval(TextBox35.value))

alert("此项评分不能超过该项最高分!");
self['TextBox6'].value = 0;

sumValue = a+b+c+d+e;
self['TextBox46'].value =sumValue;
上面就是一段js,textbox2到6就是用户输入的分数,textbox31到35就是制定的最高分,不能超过,然后最下面有一个textbox46是上面输入分的和。chrome里面效果很不错,但是ie内核和firefox都不可用。求帮忙改一下,谢谢,没分了

  您好!很高兴为您答疑。
  您的这段代码主要有如下几个问题:
  1、eval(TextBox2.value),您这样做应该是想做数据类型转换,但是如果您实际了解了eval的作用后会发现,其实您这么做是错误的;
2、self[\'TextBox3\'].value这个实在看不懂何意。是不是您定义了多个name相同的控件。
结合您的代码给您以下2点建议:

1、因为js是浏览器兼容性问题的高发区,因此建议考虑使用jQuery框架,利用其规避兼容问题;

2、即便不用框架,也请使用原生的dom对象,您这种奇怪的表达式对于阅读性和兼容性都有很大的伤害。

  如果对我们的回答存在任何疑问,欢迎继续问询。
参考技术A self['TextBox46'].是什么用法?是自己封装的数组对象吗?追问

就是如果评分超过最高分把自己归零

追答

if(a>eval(TextBox31.value),这行代码编译错误。少括号。

以上是关于写了一段js。在chrome里可用,但是在firefox和ie内核的浏览器不可以用。我知道是兼容性问题,帮改,见详细的主要内容,如果未能解决你的问题,请参考以下文章

java xml 写了一段代码 属性里的默认值出不来

谈谈一个菜鸟写了一段时间的静态页面

在 chrome 中运行时,cordova.js 不可用

LaTeX 写了一段\item,有step1,step2,... 但每个step之间的间距太大,要怎么设置间距

一个只有99行代码的JS流程框架

一个只有99行代码的JS流程框架