代码:
在顶部有一些全局设置。 On是inputElementRef,它是我正在使用的输入元素的引用
在onload函数中,obj使用函数setPropertys附加到元素。
在setPropertys中我创建一个对象,因为我想在脚本中的任何地方使用这些变量 在这个函数的底部,它启动了在输入元素中发送的addEvent。
在addEvents中,它使用回调giveOptions()
声明了一个onkeyup事件在giveOptions中,我检测到var元素,它是附加对象的输入字段。
问题: 现在为什么我在函数giveOptions中访问了对象,为什么我没有像在代码底部那样访问函数外部。
我试图在对象中访问那些没有成功的变量。
它表示我只能访问函数giveOptions()中的对象,而不是在外部或任何其他函数中。
为什么会这样,以及如何更改代码以便我可以在任何地方访问对象真实的输入元素?
/ * js controller * /
// 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);
答案 0 :(得分:0)
试试这个:
console.log("input element ref: " + inputElementRef);
其余的做类似的事情。这会将所有变量作为字符串输出到控制台。
先做这件事:
关闭var currentSelectedOption;
< - '; “