如何在javascript中访问附加到元素globaly的对象

如何在javascript中访问附加到元素globaly的对象,javascript,object,Javascript,Object,守则: 顶部有一些全局设置。 On是inputElementRef,它是我正在使用的输入元素的引用 在onload函数中,使用函数setPropertys将obj附加到元素 在setPropertys中,我创建了一个对象,因为我想在脚本中的任何地方都使用这些变量 在该函数的底部,它在输入元素中启动addEvent发送 在addEvents中,它声明了一个带有回调giveOptions()的onkeyup事件 在giveOptions中,我检测var元素,它是对象所附着的输入字段 问题: 现在为什

守则:

顶部有一些全局设置。 On是inputElementRef,它是我正在使用的输入元素的引用

在onload函数中,使用函数setPropertys将obj附加到元素

在setPropertys中,我创建了一个对象,因为我想在脚本中的任何地方都使用这些变量 在该函数的底部,它在输入元素中启动addEvent发送

在addEvents中,它声明了一个带有回调giveOptions()的onkeyup事件

在giveOptions中,我检测var元素,它是对象所附着的输入字段

问题: 现在为什么我有权限访问函数giveOptions中的对象,为什么我没有权限访问该函数之外的对象,就像代码底部一样

我试图访问对象中未成功的变量

这表明我只能访问函数giveOptions()中的对象,而不能在任何其他函数外部或内部访问

为什么会这样?我怎样才能更改代码,使我能够访问输入元素的对象true

/*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);
试试这个:

console.log("input element ref: " + inputElementRef);
其余的也做类似的事情。这将把所有变量作为字符串输出到控制台

首先执行此操作:

关闭
var currentSelected选项请尝试以下操作:

console.log("input element ref: " + inputElementRef);
其余的也做类似的事情。这将把所有变量作为字符串输出到控制台

首先执行此操作:


关闭
var currentSelected选项
你能分享fiddle/html吗?你能分享fiddle/html吗?tnx,那确实是个错误,我访问了element console.log(“element=“+inputElementRef”);但是我无法进入obj来访问我在giveoptions函数中输入的其他值;控制台日志(params);console.log(inputElementRef.obj.file)?如果你能用你的例子创建一个简单的提琴,那么我们就可以看看你创建的对象了。tnx,这确实是个错误,我访问了元素控制台.log(“element=“+inputElementRef”);但是我无法进入obj来访问我在giveoptions函数中输入的其他值;控制台日志(params);console.log(inputElementRef.obj.file)?如果您能用您的示例创建一个简单的提琴,那么我们就可以看看您创建的对象了。