使用 javascript 查找表单选择元素的长度

发布于 2024-09-06 11:54:02 字数 893 浏览 5 评论 0原文

我尝试了几种不同的变体来查找选择元素的长度,但没有任何效果!我不明白为什么,因为几个网站将其列为正确的代码。

这是 javascript:

<script type="text/javascript"> 
    alert(document.getElementById("opentimes").options.length);
</script>

这是表单:

<form action="eateries.php" method="POST" name="filters">
        <select name="opentimes" id="opentimes" onChange="document.forms.filters.submit();">
            <option value="now">Open Now</option>
            <option value="tonight">Open Tonight</option>
            <option value="late">Open Late</option>
            <option value="whenever">Open Whenever</option>
        </select>
.......
</form>

我知道警报正在工作,因为我已经用简单的字符串对其进行了测试。我尝试过像 document.filters.opentimes.length 和 document.forms.filters.opentimes.length 这样的变体,但没有任何效果!

谢谢。

i've tried several different variations of finding the length of a select element and nothing's working! i can't figure out why, since several websites list this is as the correct code.

here's the javascript:

<script type="text/javascript"> 
    alert(document.getElementById("opentimes").options.length);
</script>

and here's the form:

<form action="eateries.php" method="POST" name="filters">
        <select name="opentimes" id="opentimes" onChange="document.forms.filters.submit();">
            <option value="now">Open Now</option>
            <option value="tonight">Open Tonight</option>
            <option value="late">Open Late</option>
            <option value="whenever">Open Whenever</option>
        </select>
.......
</form>

i know the alert is working because i've tested it with simple strings. i've tried variations like document.filters.opentimes.length and document.forms.filters.opentimes.length but nothing works!

thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

最笨的告白 2024-09-13 11:54:02

你的代码实际上是有效的,但我猜你的代码是在 DOM 加载之前执行的。例如,尝试一下:

<script type="text/javascript"> 
    window.onload = function(){
        alert(document.getElementById("opentimes").options.length);
    };
</script>

加载网页上的 HTML 结构时,将执行 window.onload = function(){ ... }; 中包含的所有代码。从那时起,您就可以使用 document.getElementById() 方法。

另外,您可以将代码移至文档末尾,但我不建议这样做。太丑了。

You're code is actually working, but I guess your code is executed before the DOM is loaded. Try this, for example:

<script type="text/javascript"> 
    window.onload = function(){
        alert(document.getElementById("opentimes").options.length);
    };
</script>

All code which is wrapped in window.onload = function(){ ... }; will be executed when the HTML-structure on the webpage is loaded. From that moment, you can use the document.getElementById() method.

Also, you can move your code down to the end of the document, but I wouldn't recommend that. It's ugly.

若有似无的小暗淡 2024-09-13 11:54:02

执行顺序。您可能尝试在#opentimes 存在于 DOM 中之前访问它。

尝试将 JavaScript 放在

第二个建议正在实施

<script type="text/javascript"> 
  onload = function()
  {
    alert(document.getElementById("opentimes").options.length);
  }
</script>

但请注意 - 如果其他脚本正在使用它,您通常可以覆盖其他“加载”功能。

Order of execution. You're probably trying to access #opentimes before it exists in the DOM.

Try either putting your javascript below the <select> (in source order) or wrapping it in the body's load event.

2nd suggestion in action

<script type="text/javascript"> 
  onload = function()
  {
    alert(document.getElementById("opentimes").options.length);
  }
</script>

But be warned - you can often overwrite other "on load" functionality if other scripts are using it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文