Javascript getElementByID不工作,因为字段位于某种框架中,如何访问它?

Javascript getElementByID不工作,因为字段位于某种框架中,如何访问它?,javascript,getelementbyid,getelementsbyname,Javascript,Getelementbyid,Getelementsbyname,请快速进入此页面并点击右上角的登录: 以下是链接: 我正在尝试预先填充弹出的这两个字段。他们似乎处于某种状态。我无法使用getElementByID(或任何getElement)访问字段。如何使用javascript访问这两个字段 注意:(不必担心触发javascript,只需访问字段即可) 以下是我当前的代码: document.getElementById('login-dialog-email').value = 'the user name'; 密码和电子邮件输入框具有相同的id登录对

请快速进入此页面并点击右上角的登录:

以下是链接:

我正在尝试预先填充弹出的这两个字段。他们似乎处于某种状态。我无法使用getElementByID(或任何getElement)访问字段。如何使用javascript访问这两个字段

注意:(不必担心触发javascript,只需访问字段即可)

以下是我当前的代码:

document.getElementById('login-dialog-email').value = 'the user name';

密码和电子邮件输入框具有相同的id
登录对话框email
。当您尝试赋值时,javascript会被弄糊涂。分配不同的id,你就可以开始了。

如果你在调试器中查看HTML,比如Chrome调试器,你会看到你有两个id为“login dialog email”的输入元素实例

W3C规范指出,单个HTML文档中只能使用id属性的一个实例,而浏览器供应商实现该规范的方式是,如果页面上有多个相同值的id属性,则该行为被视为未定义

<div id="login-form-template" style="display: none">
    <form accept-charset="UTF-8" action="https://auth.gamesalad.com/auth/signIn" class="dialog dialog-form" id="common-login-form" method="post">
   ...

    <li class="email">
        <label for="login-dialog-email">
        Email:
          <input id="login-dialog-email" name="emailAddress" type="text" value=""></input>
        </label>
    </li>
    <li class="password">
        <label for="login-dialog-password">
        Password:
          <input id="login-dialog-password" name="password" type="password" value="">
        </label>
    ...
根据我的经验,这实际上只影响具有所述id的元素的第二个实例,如果您搜索登录对话框电子邮件并检查哪个元素突出显示,您将看到第二个实例是表示表单的实例

删除第一个实例,或者使用唯一的id,然后就可以将该元素作为目标

此登录字段的第一个实例似乎是隐藏在页面上的模板的一部分

<div id="login-form-template" style="display: none">
    <form accept-charset="UTF-8" action="https://auth.gamesalad.com/auth/signIn" class="dialog dialog-form" id="common-login-form" method="post">
   ...

    <li class="email">
        <label for="login-dialog-email">
        Email:
          <input id="login-dialog-email" name="emailAddress" type="text" value=""></input>
        </label>
    </li>
    <li class="password">
        <label for="login-dialog-password">
        Password:
          <input id="login-dialog-password" name="password" type="password" value="">
        </label>
    ...
jQuery:

document.getElementsByClassName("email")[2].
    getElementsByTagName("input")[0].value = "test@example.com";
该站点正在使用jQuery,因此您也可以使用:

$('input[name="emailAddress"]').val( "test@example.com" );

你指的是哪一页?抱歉,差点忘了添加它。您好,下一步您需要添加的是您试图用来访问这些字段的代码。这给了我们一个起点,也让我们觉得你自己也尝试过/做过研究。祝你好运@ManOx输入字段不在任何帧中,我的意思是,它在具有“frame”的
id
div
中,但它不在任何HTML帧中。@JonathanSampson那么有什么特殊的方法可以访问它吗?因为就像我说的,getElement不工作。我没有这个网站,也没有访问托管文件的服务器的权限。有没有不编辑id的方法?很抱歉再次打扰,但是我如何使用类来指定我要访问的字段?@ManOx-抱歉。花了我一分钟。jQuery略微削弱了我的原始JavaScript技能:)您可以使用GetElementsByCassName选择器,然后瞄准集合中的第三项,然后使用getElementsByTagName获取输入元素。非常感谢,这会让我的用户(包括我)非常高兴:)不客气。乐意帮助:)如果你对网站所有者很友好,你可能会建议他们在FancyBox使用的模板中使用类名。有一天,当他们试图将重复id作为目标时,他们自己可能会有更多意想不到的行为。祝你好运