1

为什么我的“myns:button”在 IE 6 / 7 / 8 中不像 Firefox / Opera / Safari / Chrome 那样变红?

<html>
    <head>
        <script type="text/javascript">
            window.onload = function() {
                var tmp = document.getElementsByTagName('myns:button');

                for (i = 0; i < tmp.length; i++) {
                    tmp[i].style.color = '#FF0000';
                }
            };
        </script>
    </head>
    <body>
        <myns:button>My NS Button</myns:button>
    </body>
</html>

我已经尝试在我的 js 中添加以下内容:

document.createElement('myns:button');

但这在IE中不起作用,为什么?谢谢。

4

3 回答 3

2

像其他人一样,我真的建议您不要这样做。但 ...

如果你真的想要,并且你不太关心验证,你可以这样做:

<html xmlns:myns='http://www.example.com/namespaces'>
    <head>
        <script type="text/javascript">
            window.onload = function() {
                 var tmp = document.getElementsByTagName(
                         (typeof document.body.scopeName == "undefined") ? 
                              'myns:button' : 'button');

                 for (i = 0; i < tmp.length; i++) {
                    if ((typeof tmp[i].scopeName == "undefined") || 
                            (tmp[i].scopeName == 'myns'))
                       tmp[i].style.color = '#FF0000';
                 }
            };
        </script>
    </head>
    <body>
        <myns:button>My NS Button</myns:button>
    </body>
</html>

将http://www.example.com/namespaces更改为您自己的命名空间名称。

在最新版本的 FF、Chrome、Opera 和 IE6、IE7 和 IE8 中测试。

请参阅http://msdn.microsoft.com/en-us/library/ms534388%28VS.85%29.aspx作为起点,了解它在 IE 中的工作原理。

于 2010-05-30T11:13:03.000 回答
1

myns:button不是有效的 HTML 标记,浏览器可能会以不同的方式解释它。

于 2010-05-30T09:04:41.750 回答
1

我不确定为什么需要非标准的 DOM 元素,但如果需要制作具有不同外观的按钮(红色文本),常见的 HTML 方法是使用类属性并设置按钮样式CSS

<style type="text/css">
    .mynsbutton {color: #ff0000;}
</style>

<input type="button" class="mynsbutton" value="My Button" />

然后,如果您需要使用 javascript 查找所有 mynsbutton 元素以进行更多处理,您可以查看jQuery库,或使用Internet 上现成的代码片段之一来查找您的 mynsbutton-class 的所有元素。

于 2010-05-30T09:44:11.117 回答