【问题标题】:Opera/Firefox Javascript engine differencesOpera/Firefox Javascript 引擎差异
【发布时间】:2011-05-18 17:59:28
【问题描述】:

我想知道是否有其他人在使用 javascript 的浏览器之间经历过这种“故障”。

我的 javascript 如下

  var theForm = document.getElementById( 'theForm' );

  theForm.firstname = theForm.firstName.value.trim();
  theForm.lastname = theForm.lastName.value.trim();


  theForm.firstName.style.color = "red";

这似乎在 Opera 11 中不起作用,但在 Firefox 4 中起作用。

我只是认为这两个 javascript 引擎处理事情的方式不同。

当我在两者中调试 javascript 时,我得到不同的结果。

在 Opera 中,theForm.firstName 在赋值后变成了一个常规的旧字符串,但在 Firefox 中它仍然是一个表单元素。

有其他人经历过吗?

【问题讨论】:

  • 它们是两种不同类型的浏览器......
  • 你的所作所为是邪恶的/破碎的
  • @Matt McDonald?从代码中不是很明显吗?他试图修剪字段 firstname 和 lastname 中的值,然后将 firstName 的文本颜色设置为红色。话虽如此,当人们说这不起作用时,我无法忍受......

标签: javascript firefox opera


【解决方案1】:
<form id="bar">
  <input name="foo">
</form>

var form = document.getElementById("bar");

form.foo; // is a DOM element

form.foo = form.foo.value.trim(); // trying to set a dom element to a string??

form.foo; // What am I?

如果你隐藏它,浏览器应该如何知道 form["someName"] 是表单内的属性还是 DOM 元素。

垃圾进,垃圾出。

【讨论】:

  • 是的,它在 Firefox 中工作很奇怪。我猜他们“占”了它。
【解决方案2】:

就像 Raynos 所说:您正在将 DOM 元素设置为字符串。将您的代码更改为

var theForm = document.getElementById( 'theForm' );
theForm.firstname.value = theForm.firstName.value.trim();
theForm.lastname.value = theForm.lastName.value.trim();
theForm.firstName.style.color = "red";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 2013-05-08
    • 2010-12-03
    • 1970-01-01
    • 2011-04-18
    • 2010-11-24
    • 1970-01-01
    相关资源
    最近更新 更多