1

我有

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>Function test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
    <script type="text/javascript">
        function doFunction(towindow)
        {
            towindow.value='2';
        }   
    </script>
</head>
<body>
    <div>
        <textarea id="outputarea" rows="6" cols="60"></textarea> <br />
        <button type="button" onclick="doFunction(outputarea)">doFunction </button>
    </div>
</body>
</html>

这不起作用。单击按钮时,什么也没有发生。

如果我删除<!DOCTYPE ....然后一切正常。

我想保留 DOCTYPE 以供验证,我从W3schools 网站上找到了这个确切的声明。该代码确实验证。我正在使用 Firefox 10.0。当我使用 Chrome 27.0.1453.116 时,问题不会发生。此外,当我使用 Explorer 10 时,也不会出现此问题。

JavaScript、DOCTYPE 声明和 Firefox 之间似乎存在问题。

问题是什么?我该如何解决这个问题?

(我看到其他问题(例如参见this-1 this-2this-3this-4)有一些相同的问题,但他们没有帮助)

4

2 回答 2

4

The problem is not the DOCTYPE; it may be that Firefox 10 (which is pretty old now BTW) is interpreting the code differently depending on the DOCTYPE, but the real problem is your Javascript.

Your code onclick="doFunction(outputarea)" is not really correct; some browsers will guess that you want the element with the ID outputarea but that's not standard behavior. Your should do something like this instead:

<script type="text/javascript">
    function doFunction(towindowId)
    {
        var towindow = document.getElementById(towindowId);
        towindow.value='2';
    }   
</script>
...
<button type="button" onclick="doFunction('outputarea')">doFunction </button>

Also, you should always check for Javascript errors in Firefox's error console - I tested your original code in Firefox 10 and got the error "Error: toWindowId is not defined".

FYI, XHTML (strict mode or otherwise) is rarely needed; you might want to consider just the regular HTML5 doctype, <!DOCTYPE html>, unless you have a specific reason for needing XHTML. See this article: http://www.webdevout.net/articles/beware-of-xhtml. Also note that the W3Schools info is often not up-to-date with current trends and practices.

于 2013-06-23T01:20:47.100 回答
0

所有新网页都需要文档类型。您没有将您的页面作为 XHTML 提供,因此使用您现在拥有的 doctype 没有任何意义。使用新的,因为它可以让所有浏览器回到您想要的标准模式下的 IE6,而且它更短且更容易记住。<!DOCTYPE html>

Firefox 10 是一个古董,我不知道你为什么认为有人使用它。忽略它。当前版本为 21。

因此,只需将前两行更改为此,它就可以在当前版本的 Chrome 和 Firefox 中使用:

<!DOCTYPE html>
<html>

没看IE。

此外,删除元元素。这仅适用于正在查看您保存到桌面而不是通过 Internet 的页面的人(除非您需要)。此外,脚本标签的 type 属性不再需要。

于 2013-06-23T01:11:33.910 回答