2011-08-08 56 views
2

我正在創建一個應用程序,它使用相同的數字鍵盤填充使用javascript的兩個單獨的文本樣式表單值。如何全局存儲div ID值

我發現如何收集一個函數內部使用的div ID(用於切換隱藏值),但我需要以某種方式保存該值,以便我可以知道將數字放入哪個字段時進來。

我試着用這個全局變量,但它似乎沒有工作,因爲ID似乎沒有記錄爲一個字符串值。

,我使用並切換顯示/隱藏屬性的代碼,但如果我用一個提示框彈出什麼我使用作爲存儲變量爲它讀取[object HTMLDivElement]

我的劇本是這樣的(熊記住我是javascript的noob)。

<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

你知道如何使用console.log嗎? –

+0

從來沒有聽說過它。它是一個存儲區域嗎? – Andy

+2

@Joseph就像我說的....我是一個小白菜:P – Andy

回答

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

當分配total時,您還需要'document.getElementById(appSettings.padName).value = ...'。 – sje397

+0

@ sje397 - 按要求完成。 – karim79

1

對於初學者,ref被分配了對DOM元素的引用。然後,您將此參考分配到padName,因此[object HTMLDivElement]警報。

如果你只是想保存在padName的ID,使用

padName = field; 

此外,你混合padName案件。您有padNamepadname

此外,如評論中所述,使用控制檯進行調試。它比警報更全面。

我無法分辨您的click函數中發生了什麼。您似乎期待padName成爲某種對象,但其中value()方法和value屬性來自任何人的猜測(FYI只有表單元素具有value屬性)。

+0

謝謝。我沒有注意到情況混合。 value屬性來自一個表單文本字段,所以我假設這個命令將獲取該字段中的任何字符串。 – Andy