只有在检查后才能使用Javascript getElementsByClassName

时间:2017-08-30 16:36:49

标签: javascript jquery dom

我正在编写一个脚本,将一个元素附加到网页上的添加模式中。 问题是我的getElementsByClassName方法在运行时返回空(已编辑),但在我检查页面之后会发生一些事情。

$('.my-trigerring-modal-button').click(function () {
   //try to avoid retrieve before modal added
    setTimeout(function() {
        var element = document.getElementsByClassName('Modal-form');
        if(element === undefined || element.length == 0){
            //always return undefined on run
            return;
        }
    }, 5000);
})

但是当我在检查页面后在浏览器控制台中运行下面的代码时,我检索了想要的元素

document.getElementsByClassName('Modal-form')

修改

这是我的代码 HTML:

<button type="submit" class="my-trigerring-modal-button" style="visibility: visible;"></button>

此HTML按钮存在,“模态形式”元素也由库脚本添加,我没有权力。 对于那些问我5秒就够了的人:是的! {5}之前正确显示'Modal-form'元素。

如果我不确定,我就不会问你这个了!

我担心库脚本会停止我的脚本覆盖他的表单,但Chrome有足够的权利在检查后执行此操作

由于

1 个答案:

答案 0 :(得分:0)

问题可能来自于元素可能尚未加载的事实。请改用onclick =“”;

<a onclick="stackOverflow()"></a>

我还单独使用原始javascript

function stackOverflow() {
    //try to avoid retrieve before modal added
    setTimeout(function() {
        var element = document.getElementsByClassName('Modal-form');
        if(element === undefined || element.length == 0){
            //always return undefined on run
            return;
        }
    }, 5000);
}

虽然我不知道你为什么使用5000毫秒,但似乎很长。