Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取下一个文本输入的值?_Javascript - Fatal编程技术网

Javascript 如何获取下一个文本输入的值?

Javascript 如何获取下一个文本输入的值?,javascript,Javascript,我正在用IE7做我的项目,我想知道当我点击之前的标签时,如何获得文本输入的值 这是我的DOM: <table> <tr> <td> <label id="lbl_name">Name:</label> </td> <td> <input type="text" id="name" /> </td> </tr> </table> 需要帮忙吗?如果可以以非jque

我正在用IE7做我的项目,我想知道当我点击之前的标签时,如何获得文本输入的值

这是我的DOM:

<table>
<tr>
<td>
 <label id="lbl_name">Name:</label>
</td>
<td>
 <input type="text" id="name" />
</td>
</tr>
</table>

需要帮忙吗?如果可以以非jquery方式共享代码。谢谢

输入不是标签的同级。要使用该方法,您需要:

  • 获取父节点(td)
  • 获取该节点的下一个同级节点
  • 获取该节点的第一个输入子体
  • 然而,这个标签目前是无用的,因为它根本与输入无关。如果修复标记:

    <label id="lbl_name" for="name">Name:</label>
    

    输入不是标签的同级。要使用该方法,您需要:

  • 获取父节点(td)
  • 获取该节点的下一个同级节点
  • 获取该节点的第一个输入子体
  • 然而,这个标签目前是无用的,因为它根本与输入无关。如果修复标记:

    <label id="lbl_name" for="name">Name:</label>
    

    这是因为该字段不是兄弟

    你必须先找到父母,兄弟姐妹,然后是第一个孩子:

    document.activeElement.parentNode.nextSibling.children[0];
    

    也就是说,如果中间没有文本节点,那是因为该字段不是同级

    你必须先找到父母,兄弟姐妹,然后是第一个孩子:

    document.activeElement.parentNode.nextSibling.children[0];
    

    也就是说,如果中间没有文本节点,我修改了@Kenneth的答案,下面是它的工作原理:

    document.getElementById('lbl_name').attachEvent('onclick', function () { alert(document.activeElement.nextSibling.children[0].value);
    });
    
    document.activeElement
    是我单击的“标签”,下一个sibling将是包含
    元素的
    标签,
    子元素[0]
    。在其上添加
    .value
    将返回其中的文本


    谢谢大家的意见,我修改了@Kenneth的答案,以下是它的工作原理:

    document.getElementById('lbl_name').attachEvent('onclick', function () { alert(document.activeElement.nextSibling.children[0].value);
    });
    
    document.activeElement
    是我单击的“标签”,下一个sibling将是包含
    元素的
    标签,
    子元素[0]
    。在其上添加
    .value
    将返回其中的文本



    谢谢大家的意见,这个标签没用。它没有任何作为控件或for属性的子体。请首先更正HTML:使用标签上的“for”属性,如下所示:名称:。for属性应该指向它所属字段的id。然后使用@Quentin在下面描述的方法。
    label
    使用输入的
    id
    将两者连接起来。您的
    标签可以是
    div
    span
    。但是,要回答您的问题,请使用家长
    td
    的nextSibling child
    输入
    attachEvent
    是IE的古代版本的非标准代码。使用。@itagomo:就像他说的那样。古代的p那个标签没用。它没有任何作为控件或for属性的子体。请首先更正HTML:使用标签上的“for”属性,如下所示:名称:。for属性应该指向它所属字段的id。然后使用@Quentin在下面描述的方法。
    label
    使用输入的
    id
    将两者连接起来。您的
    标签可以是
    div
    span
    。但是,要回答您的问题,请使用家长
    td
    的nextSibling child
    输入
    attachEvent
    是IE的古代版本的非标准代码。使用。@itagomo:就像他说的那样。古代的p对于引用,
    this.htmlFor
    应返回与
    this.getAttribute('for')
    相同的值。以下是我在标签上添加for=“name”后所做的操作:document.getElementById('lbl_name')。attachEvent('onclick',function(){alert(document.getElementById('for')).value);});但是getting error'Objects不支持此属性或方法我手头没有IE的副本,所以我只得到了Uncaught TypeError:Object#没有方法'attachEvent',但是如果我使用标准代码的话。是的,你的代码在不同的浏览器中运行,但我需要让它在IE 7中工作(公司原因)。在经典IE版本上执行此操作确实很有挑战性。看起来像是
    'this.getAttribute('for')”
    不适用于IE 7及以下版本。作为参考,
    this.htmlFor
    应该返回与
    this.getAttribute('for')
    相同的值。下面是我在标签上添加for=“name”后所做的操作:document.getElementById('lbl_name')).attachEvent('onclick',函数(){alert(document.getElementById(this.getAttribute('for')).value);});但是getting error'Objects不支持此属性或方法我手头没有IE的副本,所以我只得到了Uncaught TypeError:Object#没有方法'attachEvent',但是如果我使用标准代码的话。是的,你的代码在不同的浏览器中运行,但我需要让它在IE 7中工作(公司原因)。在经典IE版本上执行此操作非常具有挑战性。看起来
    “this.getAttribute('for')”
    不适用于IE 7及以下版本。我是通过删除“parentNode”来实现的。代码:document.getElementById('lbl_name').attachEvent('onclick',function(){alert(document.activeElement.nextSibling.children[0].value);});我对document.activeElement.parentNode.nextSibling.children[0].valueI未获得任何信息。我是通过删除“parentNode”实现的。代码:document.getElementById('lbl_name').attachEvent('onclick',function(){alert(document.activeElement.nextSibling.children[0].value);});我对document.activeElement.parentNode.nextSibling.children[0].value未获取任何信息