Javascript 始终从document.evaluate的iterateNext()获取空值

Javascript 始终从document.evaluate的iterateNext()获取空值,javascript,dom,xpath,document.evaluate,Javascript,Dom,Xpath,Document.evaluate,当在脚本中使用下面的代码时,总是为e获取null var e = document.evaluate(xpath, document, null, XPathResult.ANY_TYPE, null).iterateNext(); 但是在Chrome控制台中使用这个命令,e可以得到正确的值,为什么会发生这种情况 下面是js文件和html文件的完整代码 test.js function testClick(xpath){ var e = document.evaluate(xpath, doc

当在脚本中使用下面的代码时,总是为e获取null

var e = document.evaluate(xpath, document, null, XPathResult.ANY_TYPE, null).iterateNext();
但是在Chrome控制台中使用这个命令,e可以得到正确的值,为什么会发生这种情况

下面是js文件和html文件的完整代码

test.js

function testClick(xpath){
var e = document.evaluate(xpath, document, null, XPathResult.ANY_TYPE, null).iterateNext();
// var a = e.iterateNext();
if(document.createEvent){
    var event = document.createEvent('MouseEvents');
    event.initEvent('click', true, false);
    e.dispatchEvent(event);
}
else if(document.createEventObject){
    e.fireEvent('onclick');
}
}


var xpath = "(//a[@href='./detail.html'])[1]";
setTimeout(testClick(xpath), 3000);
html


问题已解决

下面的代码可以工作,似乎无法直接调用window.onload中带有参数的方法

在window.onload中调用带参数的方法时,它将在window.onload之前执行此方法,因此该元素在方法执行时未完成加载,因此将返回null

function testClickWithParam(xpath){
    var e = document.evaluate(xpath, document, null, XPathResult.ANY_TYPE, null).iterateNext();

    if(document.createEvent){
        var event = document.createEvent('MouseEvents');
        event.initEvent('click', true, false);
        e.dispatchEvent(event);
    }
    else if(document.createEventObject){
    e.fireEvent('onclick');
    }
}

function testClickLink(){
    var xpath = "(//a[@href='./detail.html'])[1]";
    console.log(window.location.href);
    testClickWithParam(xpath);
}


window.onload = testClickLink;
function testClickWithParam(xpath){
    var e = document.evaluate(xpath, document, null, XPathResult.ANY_TYPE, null).iterateNext();

    if(document.createEvent){
        var event = document.createEvent('MouseEvents');
        event.initEvent('click', true, false);
        e.dispatchEvent(event);
    }
    else if(document.createEventObject){
    e.fireEvent('onclick');
    }
}

function testClickLink(){
    var xpath = "(//a[@href='./detail.html'])[1]";
    console.log(window.location.href);
    testClickWithParam(xpath);
}


window.onload = testClickLink;