HTML脚本不断运行?

时间:2015-03-24 16:20:59

标签: javascript html

有没有办法让javascript咖啡总是检查文件?我的意思是,如果我有"如果"语句,它将始终检查文档,看它是否需要运行脚本......

此外,它不需要是一个需要调用的函数。以下是我要问的一些简单例子。

<button id="btn1">random button</button>
<button id="btn2" onclick="hide()">hide</button>
<script>
    function hide() {
        document.getElementById("btn1").setAttribute("hidden", "true")
    }
</script>
<script>
    if (document.getElementById("btn1").hidden === true) {
        document.write("random button is hidden")
    }
</script>

我如何做喜欢这个?我不是特别想要这个,这只是一个例子。

在代码中,一个按钮隐藏了另一个按钮,并且脚本总是检查它是否被隐藏。请告诉我。

修改

我看到其他人的答案,但这不是我需要的。是否有可能在不被调用的情况下持续运行函数?

2 个答案:

答案 0 :(得分:29)

JavaScript包含所谓的事件。任何DOM元素都可以响应用户交互发出事件。例如:

var button2 = document.querySelector('#btn2');
//            what event                 function to be called
//                       vvvvvvv  vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
button2.addEventListener('click', function runThisOnButtonClick(event) {
    // Code in here will only run when the button is clicked.
    hideInSomeFashion(button1);
});

如果您想要更全面的DOM视图,最近的浏览器会将其称为 MutationObserver

在您的情况下,类似[example]:

// Older versions of Webkit have this under a prefix
var MutationObserver = MutationObserver || WebkitMutationObserver; 
var myMo = new MutationObserver(function(mutations) {
    // handleMutation in this case is a function that takes
    // a mutation and performs an action. Note that in this
    // case, return values are ignored.
    mutations.forEach(handleMutation);
});
myMo.observe(button1, {
    attributes: true // Observe changes in attributes
});

function handleMutation(mutation) {
    console.log("Hidden?", mutation.target.hidden);
}

MutationObserver可以观察共同的祖先及其所有后代的变化。

答案 1 :(得分:6)

虽然我强烈建议您找另一种方法来做你想做的事情,如果可能的话,我认为这就是你要求的。

setInterval(function() {
    if(document.getElementById("btn1").hidden === true) {
        // Button is hidden
    }
}, 1000); // Wait 1000ms before running again