HTML Onclick事件(意外令牌})

时间:2016-11-13 22:24:57

标签: javascript html onclick

我目前遇到onclick事件的问题我绞尽脑汁而无法找到问题

的index.html

<table  id="WIP" class="table" width="80%">
<tr><th colspan="6">Please Enter Your Parts In Progress</th></tr>
<tr>
<th>Station</th>
<th>Current WIP</th>
<th>Enter WIP</th>
<th>Save WIP</th>
</tr><tr>
<div id="10001DIV">
<th>Cutter</th>
<td># Of WIP</td>
<td><input name="10001WIP" type="text"></td>
<td><button type="button" onclick="SaveWIP({div:document.getElementById("10001DIV").value,num:document.getElementById("10001WIP").value})">WIP</button></td>
</div>
</tr>
</table>

<script>
function SaveWIP(e) {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("10001DIV").innerHTML = this.responseText;
    }
  };

  xhttp.open("GET", "getuser.php?q="+e.num+"",true);
  xhttp.send();

}
</script>

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:0)

我建议你只传递id(和/或name),然后在你的函数中使用querySelector('...').value

如果您将id添加到input,则可以使用getElementById()

旁注,document.getElementById('10001DIV').value无效,因为该元素不是输入,而是div

function SaveWIP(e) {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("10001DIV").innerHTML = this.responseText;
    }
  };
  
  xhttp.open("GET", "getuser.php?q="+document.querySelector('[name="'+e.num+'"]').value+"",true);
  xhttp.send();
}
<table  id="WIP" class="table" width="80%">
<tr><th colspan="6">Please Enter Your Parts In Progress</th></tr>
<tr>
<th>Station</th>
<th>Current WIP</th>
<th>Enter WIP</th>
<th>Save WIP</th>
</tr><tr>
<div id="10001DIV">
<th>Cutter</th>
<td># Of WIP</td>
<td><input id="10001WIP" type="text"></td>
<td><button type="button" onclick="SaveWIP({div:'10001DIV',num:'10001WIP'})">WIP</button></td>
</div>
</tr>
</table>

答案 1 :(得分:0)

正如评论中所建议的那样,单击侦听器中的代码未被正确解释,因为双引号内有不带引号的双引号。而不是:

onclick="SaveWIP({div:document.getElementById("10001DIV").value,num:document.getElementById("10001WIP").value})"

在双引号内使用单引号(保存引用内部双精度):

onclick="SaveWIP({div:document.getElementById('10001DIV').value,num:document.getElementById('10001WIP').value})"

修改

你也传递div的,这可能是未定义的,当你应该传递d​​iv时,所以:

onclick="SaveWIP({div:document.getElementById('10001DIV'),num:document.getElementById('10001WIP').value})"

答案 2 :(得分:0)

我认为ID中存在问题:

document.getElementById("10001DIV").value
那是什么?你在尝试获得DIV的价值吗? 如果您需要获取输入值,但没有ID,您可以通过NAME调用它:

document.getElementsByName("10001DIV").value