我的阵列出现问题。我的第一个buttonMsg()
正确显示了提示,输入直接进入文本框。
现在我无法将相同的代码复制到我的第二个数组中
当我尝试什么都行不通。我认为这与buttonMsg
有关。
<html>
<head>
<title></title>
<script type="text/javascript">
function buttonMsg(){
varData = new Array();
varData[0] = prompt("Please enter first name.","")
varData[1] = prompt("Please enter last name.","")
varData[2] = prompt("Please enter phone number.","")
varData[3] = prompt("Please enter address.","")
document.getElementsByName('inputbox')[0].value = varData[0]
document.getElementsByName('inputbox')[1].value = varData[1]
document.getElementsByName('inputbox')[2].value = varData[2]
document.getElementsByName('inputbox')[3].value = varData[3]
}
function buttonMsg(1){
varDater = new Array(1);
varDater[0] = prompt("Please enter first name.","")
varDater[1] = prompt("Please enter last name.","")
varDater[2] = prompt("Please enter phone number.","")
varDater[3] = prompt("Please enter address.","")
document.getElementsByName('inputbox')[0].value = varDater[0]
document.getElementsByName('inputbox')[1].value = varDater[1]
document.getElementsByName('inputbox')[2].value = varDater[2]
document.getElementsByName('inputbox')[3].value = varDater[3]
}
</script>
</head>
<body>
<table border="1">
<tr>
<td>0,0 CustomerID</td>
<td>1 FirstName</td>
<td>2 LastName</td>
<td>3 Phone</td>
<td>4 Address</td>
</tr>
<tr>
<td>1 Customer1 <input type="button" value="Input" onclick="buttonMsg()"/></td>
<td><input type="text" name="inputbox" value=""></td>
<td><input type="text" name="inputbox" value=""></td>
<td><input type="text" name="inputbox" value=""></td>
<td><input type="text" name="inputbox" value=""></td>
</tr>
<tr>
<td>2 Customer2 <input type="button" value="Input" onclick="buttonMsg(1)"/></td>
<td><input type="text" name="inputbox" value=""></td>
<td><input type="text" name="inputbox" value=""></td>
<td><input type="text" name="inputbox" value=""></td>
<td><input type="text" name="inputbox" value=""></td>
</tr>
<tr>
<td>3 Customer3</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>4 Customer4</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</body>
</html>
答案 0 :(得分:0)
更改代码:
function buttonMsg(1){
varDater = new Array(1);
到
function buttonMsg1(){
varDater = new Array();
然后调用buttonMsg1();以后应该解决问题。
但是我建议你进一步研究初始化数组以及函数如何在javascript中工作。因为函数中的()用于发送参数(变量)以便稍后在该函数中使用。在这种情况下,它们应该留空。
This site为帮助理解功能提供了一个很好的起点。
进一步查看您的代码,向我显示您还想要更改:
document.getElementsByName('inputbox')[0]
在
的第二个功能中document.getElementsByName('inputbox')[4]
对于第二个函数中的所有值,等。
然而,这绝对不是用于可伸缩性的最佳方法(如果你想要两个以上的客户),我建议使用一个以不同元素名称作为参数的函数。
答案 1 :(得分:0)
看起来问题是输入都被命名为“inputbox”,所以第一和第二个函数之间确实没有输出差异。它们将填充页面上名为“inputbox”的前4个元素,因此单击第二个按钮仍将填充第一个部分的输入框。将部分输入的名称传递给函数可能更有意义:
buttonMsg(inputname){
var inputs = document.getElementsByName(inputname);
inputs[0].value = prompt("Please enter first name.","");
inputs[1].value = prompt("Please enter last name.","");
inputs[2].value = prompt("Please enter phone number.","");
inputs[3].value = prompt("Please enter address.","");
}
然后让按钮传递输入的名称,如下所示:
<tr>
<td>1 Customer1 <input type="button" value="Input" onclick="buttonMsg('inputbox1')" /></td>
<td><INPUT TYPE="text" NAME="inputbox1" VALUE=""></td>
<td><INPUT TYPE="text" NAME="inputbox1" VALUE=""></td>
<td><INPUT TYPE="text" NAME="inputbox1" VALUE=""></td>
<td><INPUT TYPE="text" NAME="inputbox1" VALUE=""></td>
</tr>
并将“inputbox1”更改为每个项目的不同名称。
答案 2 :(得分:0)
代码甚至不能工作。 Chrome会报告错误并停止执行脚本。 第二个函数的声明具有无效的参数变量名。
What characters are valid for JavaScript variable names?
另外,如前所述,名称重复。
如果您被允许使用jQuery,以下可能是一个更有趣的解决方案:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<title>Example</title>
<script type="text/javascript">
(function($){
$(document).ready(function(){
$('input.promptInput').bind('click', function() {
varData = new Array();
varData[0] = prompt("Please enter first name.","")
varData[1] = prompt("Please enter last name.","")
varData[2] = prompt("Please enter phone number.","")
varData[3] = prompt("Please enter address.","")
$(this).parents('tr:first').find('input[type="text"]').each(function(i, input){
$(input).val(varData[i]);
});
});
});
})(jQuery);
</script>
</head>
<body>
<table border="1">
<tr>
<td>0,0 CustomerID</td>
<td>1 FirstName</td>
<td>2 LastName</td>
<td>3 Phone</td>
<td>4 Address</td>
</tr>
<tr>
<td>1 Customer1 <input class="promptInput" type="button" value="Input"/></td>
<td><input type="text" name="customer_1_firstname" value=""></td>
<td><input type="text" name="customer_1_lastname" value=""></td>
<td><input type="text" name="customer_1_phone" value=""></td>
<td><input type="text" name="customer_1_address" value=""></td>
</tr>
<tr>
<td>1 Customer1 <input class="promptInput" type="button" value="Input"/></td>
<td><input type="text" name="customer_2_firstname" value=""></td>
<td><input type="text" name="customer_2_lastname" value=""></td>
<td><input type="text" name="customer_2_phone" value=""></td>
<td><input type="text" name="customer_2_address" value=""></td>
</tr>
<tr>
<td>3 Customer3</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>4 Customer4</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</body>
</html>