如何全局存储div ID值

时间:2011-08-08 02:47:08

标签: javascript html

我正在创建一个使用相同数字键盘的应用程序,使用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>

2 个答案:

答案 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的案例。您同时拥有padNamepadname

此外,如评论中所述,使用控制台进行调试。它比警报更全面。

我不知道你click函数中发生了什么。您似乎期望padName成为某种对象但是value()方法和value属性来自任何人的猜测(仅限FYI表单元素具有value属性)。