Javascript:带document.activeElement的变量

时间:2012-11-13 17:56:33

标签: javascript variables

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

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";
},

语义不正确。有没有办法可以做到这一点? 感谢

2 个答案:

答案 0 :(得分: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";
},

答案 1 :(得分: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");
         }
    }
},
...