繁体   English   中英

Javascript:具有document.activeElement的变量

[英]Javascript: variable with document.activeElement

我想创建一个变量以使我的代码更通用。 这是我正在处理的代码:

eventHandler: function(event) {
    if (event.keyCode == KEY_DOWN) {
        if (this.hasNextSibling(document.activeElement.parentNode)) {
             this.setFocus(document.activeElement.parentNode.nextSibling.firstChild);
         } else {
              this.debug("out");
         }
    }
},
setFocus: function(item)
{
document.activeElement.tabIndex = "-1";
item.focus();
document.activeElement.tabIndex = "0";
},
...

我有“ document.activeElement.parentNode.nextSibling.firstChild”的部分是问题。 为了能够重用代码,我首先要做的是设置一个这样的变量:

var test = document.activeElement.parentNode.nextSibling.firstChild; /*CHANGE HERE*/
eventHandler: function(event) {
    if (event.keyCode == KEY_DOWN) {
        if (this.hasNextSibling(document.activeElement.parentNode)) {
             this.setFocus(test); /*CHANGE HERE*/
         } else {
              this.debug("out");
         }
    }
},
setFocus: function(item)
{
document.activeElement.tabIndex = "-1";
item.focus();
document.activeElement.tabIndex = "0";
},
...

该代码无法编译。 我尝试了许多不同的方法,例如方法引用,但是似乎没有任何效果。 有人有主意吗?

非常感谢

编辑:这是我实际上想要的:

var x = parentNode.nextSibling.firstChild;
eventHandler: function(event) {
    if (event.keyCode == KEY_DOWN) {
        if (this.hasNextSibling(parent)) {
             this.setFocus(document.activeElement.x);
         } else {
              this.debug("out");
         }
    }
},
setFocus: function(item)
{
document.activeElement.tabIndex = "-1";
item.focus();
document.activeElement.tabIndex = "0";
},

语义不正确。 有办法吗? 谢谢

因为只要有按键,您的activeElement就不会相同,因此将其保留在函数之外毫无意义。 对于您编辑的答案,我唯一想到的方法是您的代码应为

var x = "parentNode.nextSibling.firstChild";//edited here
eventHandler: function(event) {
    if (event.keyCode == KEY_DOWN) {
        if (this.hasNextSibling(parent)) {
             this.setFocus(eval("document.activeElement." + x));//edited here
         } else {
              this.debug("out");
         }
    }
},
setFocus: function(item)
{
document.activeElement.tabIndex = "-1";
item.focus();
document.activeElement.tabIndex = "0";
},

问题是您试图在对象的主体内声明一个变量,其中只有键值对才有效。 尝试:

test : document.activeElement.parentNode.nextSibling.firstChild,
eventHandler: function(event) {
    if (event.keyCode == KEY_DOWN) {
        if (this.hasNextSibling(document.activeElement.parentNode)) {
             this.setFocus(this.test); /*CHANGE HERE*/
         } else {
              this.debug("out");
         }
    }
},
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM