我正在创建一个使用相同数字键盘的应用程序,使用javascript填写两个单独的文本样式表单值。
我发现如何收集一个div ID以便在函数内部使用(比如切换隐藏值),但是我需要以某种方式保存这个值,这样我就可以知道哪些字段可以将数字放入英寸
我尝试使用全局变量,但它似乎不起作用,因为ID似乎没有记录为String值。
我正在使用的代码切换show / hide属性,但如果我使用警告框弹出我用作存储的变量,则会显示[object HTMLDivElement]
我的脚本看起来像这样(请记住我是javascript的菜鸟)。
<script type="text/javascript">
<!--
keypad.display="none";
//Classes for the numberpad on the text fields.
var padName = ""; //Storage for the name of the current pad.
function numPad(field) {
var pad = document.getElementById("keypad"); //manipulating pad.
var ref = document.getElementById(field);//gather the field info.
if (pad.style.display == "block") { //Open or close?
pad.style.display = "none"; //Blank out.
padName = "";
}
else {
pad.style.display = "block";//Set to refer to correct field.
padname = ref;
alert (ref);
}
}
function click(id) {
var key = document.getElementById(id);
var total = padName.value();
if (key == "Backspace") total.slice(0, -1);
else if (key == "Enter") numPad("blanck");
else total += key;
padName.value = total;
}
-->
</script>
答案 0 :(得分:2)
// to get the ID by direct property access of the DOM element
var ref = document.getElementById(field).id;
然后ref
存储ID值。
我建议:
// create an object to store app-wide settings
// access properties like this: appSettings.propertyName
var appSettings = { padName: "" };
...
var ref = document.getElementById(field).id;
appSettings.padName = ref;
避免污染全局命名空间。
要获取/设置打击垫的值,您需要执行以下操作:
// to get
var total = document.getElementById(appSettings.padName).value;
// to set
document.getElementById(appSettings.padName).value = "something";
您应该阅读DOM对象和属性。
答案 1 :(得分:1)
对于初学者,ref
被分配了对DOM元素的引用。然后,您将此引用分配给padName
,因此[object HTMLDivElement]
提醒。
如果您只想将ID存储在padName
中,请使用
padName = field;
此外,您正在混合padName
的案例。您同时拥有padName
和padname
。
此外,如评论中所述,使用控制台进行调试。它比警报更全面。
我不知道你click
函数中发生了什么。您似乎期望padName
成为某种对象但是value()
方法和value
属性来自任何人的猜测(仅限FYI表单元素具有value
属性)。