开发者问题收集

JavaScript 错误:为空或不是对象

2010-02-22
6769

我正在使用 html 输入框,它位于更新面板内,我需要在页面加载后将光标设置为聚焦于该输入框,因此我调用了一个函数,如下所示

< body onload="javascript:document.Default.UserInputTextBox.focus();" >

但是我收到以下 Javascript 错误,

Microsoft JScript 运行时错误:'document.Default.UserInputTextBox' 为空或不是对象

请帮忙

2个回答

您必须等待 DOM 准备就绪,然后才能尝试访问 dom 中的元素; onload 事件侦听器可以等待整个文档(包括图像和 css)加载完毕……这可能是不可取的。

<head>
    <script type="text/javascript" charset="utf-8">
        // wait for the DOCUMENT to become ready.
        window.onload=function(){
          walkmydog()
        }
    </script>
</head>

以下是解决此类问题的详细说明: http://www.javascriptkit.com/dhtmltutors/domready.shtml

很多人使用 javascript 框架(如 jQuery、MooTools、YUI)来解决浏览器不兼容问题。

peterp
2010-02-22

我认为,在提醒用户这种变化之前动态改变用户的焦点并不符合可访问性的最佳利益。您可以做的可访问的事情是将用户重定向到指向相关文档对象的 id 属性的片段 URI。这样,您就不必使用任何 JavaScript。

因此,例如,如果用户请求此 URI 上的页面:
http://example.com/page.html

您可以使用 ASP 代码和 HTTP 302 代码将用户重定向到此页面:
http://example.com/page.html#myInputIDValue

这将假定所讨论的输入字段具有以下属性:
id="myInputIDValue"

2010-02-22