我想測試一個元素上有一個特定的類。這if
語句的工作:如何讓班級名冊到位的className的成功,我如果JavaScript語句?
if (children[i].className === siblingClass)
然而,只有作品如果children[i]
只有一個類,它是完全一樣的siblingClass
值。我想使功能多一點一般化,以測試是否children[i]
有siblingClass
即使它還有其他類也是如此。
所以我嘗試了classList.contains function,就像這樣:
if (children[i].classList.contains(siblingClass))
但是,當我嘗試它(在Chrome),控制檯日誌說:
Uncaught TypeError: Cannot read property 'contains' of undefined
如何創建一個測試看看是否有children[i]
它可能有一個或多個類之列siblingClass
?
請注意我希望有一個純Javascript的解決方案,如果可能的話,不需要jQuery。
這是出現在if
聲明的全部功能:
function getSiblingByClass(currentObject, siblingClass)
{
var parentofSelected = currentObject.parentNode,
children = parentofSelected.childNodes,
element,
i;
for (i = 0; i < children.length; i++)
{
if (children[i].classList.contains(siblingClass))
{
element = children[i];
break;
}
}
return element;
}
這個功能是從其他函數中調用時,我想元素兄弟姐妹之間尋找一個具有指定類的元素。它獲取當前元素的父元素,遍歷所有子元素,並返回第一個匹配項。或者,至少這是這個想法。
下面是一些HTML它調用的函數,後者又調用上面的函數:
<div>
<span class="fee">hello world</span>
<span class="fi">Blah blah blah</span>
<button class="foo" onclick="copySiblingDataByClass(this, 'fi');">Click here</button>
</div>
copySiblingDataByClass()
將依次調用getSiblingByClass()
,並通過自身和類的名稱被選中。
什麼是'孩子[I]'?你使用什麼瀏覽器版本?請創建一個[mcve] –
@Satpal錯誤清楚地表明'children [i]'被定義,'children [i] .classList'是'undefined'。如果'children [i]'是'undefined',那麼錯誤會說**無法讀取undefined **的屬性'classList'。這個問題很可能是因爲'children [i]'不是一個元素節點 –
@評論者::請認真看待OP不是一個白癡,你可能不知道背景的具體細節 - 在跳到結論和作爲這些假設的結果而下調。 – argon