如何在javascript中访问附加到元素globaly的对象
守则: 顶部有一些全局设置。 On是inputElementRef,它是我正在使用的输入元素的引用 在onload函数中,使用函数setPropertys将obj附加到元素 在setPropertys中,我创建了一个对象,因为我想在脚本中的任何地方都使用这些变量 在该函数的底部,它在输入元素中启动addEvent发送 在addEvents中,它声明了一个带有回调giveOptions()的onkeyup事件 在giveOptions中,我检测var元素,它是对象所附着的输入字段 问题: 现在为什么我有权限访问函数giveOptions中的对象,为什么我没有权限访问该函数之外的对象,就像代码底部一样 我试图访问对象中未成功的变量 这表明我只能访问函数giveOptions()中的对象,而不能在任何其他函数外部或内部访问 为什么会这样?我怎样才能更改代码,使我能够访问输入元素的对象true /*js控制器*/如何在javascript中访问附加到元素globaly的对象,javascript,object,Javascript,Object,守则: 顶部有一些全局设置。 On是inputElementRef,它是我正在使用的输入元素的引用 在onload函数中,使用函数setPropertys将obj附加到元素 在setPropertys中,我创建了一个对象,因为我想在脚本中的任何地方都使用这些变量 在该函数的底部,它在输入元素中启动addEvent发送 在addEvents中,它声明了一个带有回调giveOptions()的onkeyup事件 在giveOptions中,我检测var元素,它是对象所附着的输入字段 问题: 现在为什
// 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)?如果您能用您的示例创建一个简单的提琴,那么我们就可以看看您创建的对象了。