如何通过知道父母的另一个父母

时间:2017-07-25 10:39:12

标签: javascript jquery html

让我说我有两个具有相同ID的textareas,他们的父母有相同的ID,但父表单有不同的名字..我需要得到第二个表格的第二个textarea值! 这是一个简单的代码..

var formX = document.getElementsByName("form2");
  for(i = 0; i < formX.length; i++){
    if(formX[i].type == "textarea"){
      var inputval = formX.value;
      alert(inputval);
    }
  }
<form name="form1">
  <div id="samediv1">
    <div id="samediv2">
      <textarea id="sameID">value1</textarea>
    </div>
  </div>
</form>
<form name="form2">
  <div id="samediv1">
    <div id="samediv2">
      <textarea id="sameID">value2</textarea>
    </div>
  </div>
</form>

  • 当我尝试它时,没有出现警报,我知道因为循环没有找到任何文本区域,因为它位于表单中的另一个元素内部。 那么,如何深入了解父母和孩子?!!

非常感谢

5 个答案:

答案 0 :(得分:1)

您可以使用jQuery find()children()方法获得相同的效果。在这里,您可以阅读jQuery Traversing

&#13;
&#13;
console.log($('[name=form2]').find('#sameID').text()); //or value() can be used in place of text() method
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form name="form1">
  <div id="samediv1">
    <div id="samediv2">
      <textarea id="sameID">value1</textarea>
    </div>
  </div>
</form>
<form name="form2">
  <div id="samediv1">
    <div id="samediv2">
      <textarea id="sameID">value2</textarea>
    </div>
  </div>
</form>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

没有为两个不同元素提供相同ID的目的。你在搞乱使用ID的概念。尝试不同的ID,它会工作。 例如:

$('#parentId').find('#childId');

$('#parentId #childId');

答案 2 :(得分:0)

使用单行代码获得第二个textarea值。哪里不需要使用任何id。检查下面更新的代码段。

&#13;
&#13;
console.log($('form[name="form2"] textarea').val());
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form name="form1">
  <div id="samediv1">
    <div id="samediv2">
      <textarea id="sameID">value1</textarea>
    </div>
  </div>
</form>
<form name="form2">
  <div id="samediv1">
    <div id="samediv2">
      <textarea id="sameID">value2</textarea>
    </div>
  </div>
</form>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

您还可以使用纯js从所需的textarea获取值

&#13;
&#13;
var forms = document.getElementsByTagName('form');

for(var i = 0, ii = forms.length; i < ii; i++) {
  var textArea = forms[i].getElementsByTagName("textarea")[0];
  console.log(textArea.value)
}
&#13;
<form name="form1">
  <div id="samediv1">
    <div id="samediv2">
      <textarea id="sameID">value1</textarea>
    </div>
  </div>
</form>
<form name="form2">
  <div id="samediv1">
    <div id="samediv2">
      <textarea id="sameID">value2</textarea>
    </div>
  </div>
</form>
&#13;
&#13;
&#13;

答案 4 :(得分:0)

请尝试以下代码

val2 = $("form[name=form2] #samediv2 textarea").val()

上面的代码会将值返回为value2

希望这有帮助