我有一個這樣的功能:
function toggle(me, style) {
var myelm = me == '' ? this : document.getElementById(me);
myelm.classList = style;
}
我希望函式知道何時必須將樣式應用于觸發元素或其他元素,如以下示例中所示:
<div onclick="toggle(this);"></div> <!--this function should apply to this element only-->
<div onclick="toggle('otherelement');"></div> <!--this should apply to other element of the DOM-->
但它僅在指定 ID 時有效,并且不會this按預期應用。怎么了?
uj5u.com熱心網友回復:
在第一種情況下,您傳遞一個 DOM 元素,在第二種情況下傳遞一個(非空)字串。所以me == ''你檢查的條件在任何一種情況下都不成立。其次,this在函式中無關緊要,因為您永遠不會使用this系結呼叫它(this系結與this作為引數傳遞不同)。
您需要檢查引數的資料型別,當它是字串時,檢索 DOM 元素,否則只使用給定的引數 ( me) -- 而不是this:
另一件事:您需要toggle在classList屬性上呼叫方法:
function toggle(me, style) {
var myelm = typeof me != 'string' ? me : document.getElementById(me);
myelm.classList.toggle(style);
}
注意:確保還傳遞第二個引數(樣式)!
片段:
function toggle(me, style) {
var myelm = typeof me != 'string' ? me : document.getElementById(me);
myelm.classList.toggle(style);
}
.highlight { background: yellow }
<div id="otherelement">This is other element</div>
<p></p>
<div onclick="toggle(this, 'highlight');">toggle this</div>
<div onclick="toggle('otherelement', 'highlight');">toggle other element</div>
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/358001.html
標籤:javascript 功能 这个
上一篇:在函式中跳過空資料幀的陳述句
