我有一个html / css页面,应该使用充满按钮的html表布局来模拟t9键盘布局。
在页面上,我有一个包含两个文本字段的表单。我想使用表格/键盘值通过javascript用数字填充文本字段。
我能够将一个变量与一个字符串相关联,该字符串描述了我希望用数据填充哪个字段,但是当我调用该字段的当前值时,我得到一个错误(console.log),该错误表示“无法读取属性” x'为“未定义”。
这是我的功能。
function place(id) {
var key = ""; //Ensure that this is a string, not number
key = document.getElementById(id).id; //Get the key value.
console.log(key);
var total = ""; //initialize variable.
console.log(appSettings.padName);
total = nums.element[appSettings.padName].value; //Grab total.
//if (total.contains("Click")) total = "";
console.log(total);
if (key == "-1") total.slice(0, -1); //backspace.
else if (key == "-2") numPad(appSettings.padName); //Enter.
else total += key; //concat to end of the String.
document.getElementById(appSettings.padName).value += total; //place update.
}
我用以下html调用此函数
<div id="nums">
<form name="nums">
<h3>
Cell number: <input type="text" id="cell" value="" class="inputText" size="10" onclick="numPad('cell')" name="cell" /><br/><br/>
<div id='group'>
Party size: <input type="text" value="" class="inputText" size="10" onclick="numPad('group')" name="group" /><br/><br/>
</div>
<input type="submit" value="Submit" class="button" />
</h3>
*请注意,每个字段都有不同的ID系统。
收集变量的函数可以正常工作,以字符串格式(也称为“单元格”)收集div ID。如果您需要更多信息以帮助我,我很乐意提供:P
最佳答案
我将完全采用另一种方法进行处理。最好的解决方案是在click
上监听<table>
事件,然后您可以从中获取单击了哪个键,并相应地更新输入之一。这种做法称为事件委托,它非常有效。
您当前的JavaScript有一些错误。首先,在分配期望值之前,不需要初始化变量并为其分配“类型”。同样,您不必仅仅通过ID来查找元素就可以再次获取ID,这很浪费。我注意到您在函数中还引用了一些全局变量,这通常是不好的做法。
另一个注释,克里斯·利弗利(Chris Lively)为您提供的信息,例如:分号是公然错误的。您的原始if语句没有任何问题。您可以从这篇文章中了解更多信息:http://inimino.org/~inimino/blog/javascript_semicolons