使用javascript从另一个id获取值

时间:2016-08-05 02:53:44

标签: javascript jquery html



function edt(dt){
  isi = $(".jml").val();
  alert(isi);
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<tr>
  <td><input class="jml" id="edt1" value="1"/></td>
  <td><button id="edt1" onClick="edt(this.id);">btn 1</button></td>
</tr>
<tr>
  <td><input class="jml" id="edt1" value="2"/></td>
  <td><button id="edt2" onClick="edt(this.id);">btn 2</button></td>
</tr>
&#13;
&#13;
&#13;

我正试图从与我点击的内容相同的身份获得价值。 在那个剧本中,虽然我点击了btn 2,但是出现了第一个值 请帮帮我..谢谢!!

4 个答案:

答案 0 :(得分:1)

您的代码中存在多个问题,

  • 虽然您将id传递给edt但您没有使用它
  • isi = $(".jml").val();将始终使用类jm1
  • 返回第一个元素的值

更多jQuery-ish解决方案将是

  • 使用jQuery事件处理程序,使用按钮的类为所有按钮添加处理程序
  • 在处理程序中,您可以使用this上下文查找同一行中的input元素
  • 然后读取它的值

&#13;
&#13;
jQuery(function($) {
  $('.edt').click(function() {
    var isi = $(this).closest('tr').find('.jml').val();
    console.log('value: ' + isi)
  })
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
  <tr>
    <td>
      <input class="jml" id="edt1" value="1" />
    </td>
    <td>
      <button class="edt">btn 1</button>
    </td>
  </tr>
  <tr>
    <td>
      <input class="jml" id="edt1" value="2" />
    </td>
    <td>
      <button class="edt">btn 2</button>
    </td>
  </tr>
</table>
&#13;
&#13;
&#13;

如果你不能使用jQuery事件处理程序那么

<button class="edt" onclick="edt(this)">btn 2</button>

function edt(el) {
  var isi = $(el).closest('tr').find('.jml').val();
  console.log('value: ' + isi)
}

&#13;
&#13;
function edt(el) {
  var isi = $(el).closest('tr').find('.jml').val();
  console.log('value: ' + isi)
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
  <tr>
    <td>
      <input class="jml" id="edt1" value="1" />
    </td>
    <td>
      <button class="edt" onclick="edt(this)">btn 1</button>
    </td>
  </tr>
  <tr>
    <td>
      <input class="jml" id="edt1" value="2" />
    </td>
    <td>
      <button class="edt" onclick="edt(this)">btn 2</button>
    </td>
  </tr>
</table>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

改变你的功能。 ID must be unique [notice],使用前缀“#”获取ID。

function edt(dt){    
  isi = $("#"+dt).closest("tr").find(".jml").val();
  alert(isi);
}

答案 2 :(得分:0)

&#13;
&#13;
$('button').click(function() {

  alert($(this).closest('tr').find('input').val())

})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <td>
      <input class="jml" class="edt1" value="1" />
    </td>
    <td>
      <button class="edt1">btn 1</button>
    </td>
  </tr>
  <tr>
    <td>
      <input class="jml" class="edt2" value="2" />
    </td>
    <td>
      <button class="edt2">btn 2</button>
    </td>
  </tr>
</table>
&#13;
&#13;
&#13;

使用this context

.closest()

  

描述:对于集合中的每个元素,通过测试元素本身并遍历DOM树中的祖先来获取与选择器匹配的第一个元素。

.find()

  

描述:获取当前匹配元素集中每个元素的后代,由选择器,jQuery对象或元素过滤。

$(this)//clicked button
.closest('tr')//get the parent tr
.find('input')//get the input
.val()//get the value

&#13;
&#13;
function edt(button) {


  alert($(button).closest('tr').find('input').val())


}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <td>
      <input class="jml" class="edt1" value="1" />
    </td>
    <td>
      <button class="edt1" onClick="edt(this);">btn 1</button>
    </td>
  </tr>
  <tr>
    <td>
      <input class="jml" class="edt2" value="2" />
    </td>
    <td>
      <button class="edt2" onClick="edt(this);">btn 2</button>
    </td>
  </tr>
</table>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

ID必须是唯一的,但您的代码可以更好。

首先,您使用dt作为参数进入函数,但它从未使用过。 (为什么?)

您可以使用它从元素中读取ID并将其提供给您的脚本。检查一下。

&#13;
&#13;
function edt(dt){
  isi = $("#edt" + dt).val();
  alert(isi);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<tr>
  <td><input class="jml" id="edt1" value="1"/></td>
  <td><button onClick="edt(1);">btn 1</button></td>
</tr>
<tr>
  <td><input class="jml" id="edt2" value="2"/></td>
  <td><button onClick="edt(2);">btn 2</button></td>
</tr>
&#13;
&#13;
&#13;