代碼:如何在javascript中訪問附加到元素globaly的對象
頂部有幾個全局設置。 On is inputElementRef它是我正在使用的輸入元素的參考
在onload函數中,obj使用函數setPropertys附加到元素。
在setPropertys我做了一個對象,因爲我想在腳本中的任何地方使用這些變量 在這個函數的底部,它啓動addEvent在輸入元素中發送。
在它ADDEVENTS聲明與一個回調giveOptions()
在giveOptions我檢測了var元件,其是在其上對象所連接的輸入字段的onkeyup事件。
問題: 現在爲什麼它在函數giveOptions中存在對象,爲什麼我沒有在代碼底部的函數之外使用acces。
我試圖訪問那些沒有成功的對象中的變量。
它apears,我只有acces對象的函數giveOptions()不在外面或在任何其他功能。
爲什麼是這樣的,我該如何更改代碼,所以我有無處不在的東西,他對象真正的輸入元素?
/* JS控制器*/
// Declare globale variables
var currentSelectedOption
var currentValue;
var arrOptions;
var inputElementRef = document.getElementById('invoer');
var outputElementRef = document.getElementById('uitvoer');
// initiate application
window.onload = function(){
// Create span (hidden) for sugest values later in script)
var spanOutput = document.createElement('span');
spanOutput.id="spanOutput";
spanOutput.style.visibility="hidden";
document.body.appendChild(spanOutput);
// attack object to element
document.getElementById('invoer').obj = setPropertys(document.getElementById('invoer'), outputElementRef, 'responder.php', 'Geen resultaten', 1000);
}
// create object and add eventhandlers to element
function setPropertys(inputElement, outputElement, file, noResultMessage, timeout){
var props={
inputElement : inputElement,
outputElement : outputElement,
file : file,
noResultMessage : noResultMessage,
timeout : timeout
};
addEvents(inputElement);
return props;
}
// attack events to elements
var isOpera = (navigator.userAgent.toLowerCase().indexOf("opera") !=-1); // detect is user agent is opera
function addEvents(inputElement){
this.onkeyup = giveOptions; // all browsers use onkeyup event
if(isOpera) { this.onkeypress = giveOptions; } // if useragent is Opera use onkeypress event
}
function giveOptions(e){
if(window.event){ // All browsers except firefox: window.event is available
element = event.srcElement;
key = event.keyCode;
}
else{ // if firefox use e.target and e.which
element = e.target;
key = e.which;
}
if(key == 13){ // detect enter key
console.log("enter");
}
if(key == 38){ // detect key up
console.log("pijl omhoog");
}
if(key == 40){ // detect key down
console.log("key down");
}
// Make string to send to server
var params = inputElementRef.value;
console.log(params);
console.log(inputElementRef.obj.file);
// Send request to server
//var newdata = net.contentLoader('responder.php', procesData, null, "POST", params);
}
//console.log(inputElementRef);
//console.log(inputElementRef.getAttribute('id'));
//console.log(document.getElementById('invoer').obj.inputElement);
//console.log(inputElementRef.obj.outputElement);
//console.log(inputElementRef.obj.file);
你能分享小提琴/ html嗎? – Siddharth