奇怪的循环行为

时间:2015-10-15 23:08:39

标签: javascript dom for-loop

以下代码无法删除" class"来自节点列表的每个节点的属性。我错过了什么吗?

$pubkeyid = openssl_pkey_get_details(openssl_pkey_get_public(file_get_contents("okta.cert"))); $pubkeyid = $pubkeyid["key"]; $signature = "<get it form SAML Response>"; $data = ???? (what should be provided) $ok = openssl_verify($data, $signature, $pubkeyid,"sha1WithRSAEncryption");

HTML

<button class="choice"></button> <button class="choice"></button> <button class="choice"></button> <button onclick="removeAttr()">REMOVE ATTRIBUTES</button>

Javascript

然而,只需点击几下,您就会得到想要的结果,但我不明白为什么......

1 个答案:

答案 0 :(得分:4)

machine1返回一个实时NodeList。这意味着,当您删除类时,这些元素将不再位于NodeList中。

您可以通过向后循环来解决问题。

10.240.3.167

或者你可以使用while循环。

.getElementsByClassName()

或者您可以使用返回静态NodeList的选择方法,如function removeAttr() { var i, l, buttons = document.getElementsByClassName('choice'); for (i = 0, l = buttons.length - 1; i >= 0; --i) { buttons[i].removeAttribute('class'); } }

function removeAttr() {
    var buttons = document.getElementsByClassName('choice');
    while(buttons.length) buttons[0].removeAttribute('class');
}