2014-09-30 69 views
0

如何通過點擊

function diffSign(div) { 
 
     var sign = document.getElementById(div.id); 
 
     if (XXXXX) { 
 
     XXXXX 
 
     } else { 
 
     XXXX 
 
     } 
 
    }
<div data-toggle="collapse" data-target="#[email protected](i.tostring)" id="[email protected](i.ToString)" onclick=diffSign(this)>+</div>

我要的+號改來改去的HTML文本 - 並且可以改變回來了! THX

回答

1

函數的div參數已經代表this作爲參考。

jsBin demo

function diffSign(div){ 
    if (div.innerHTML === '+') { // If has "+" 
     div.innerHTML = '-';  // Set as "-" 
    } else {      // else? well... 
     div.innerHTML = '+'; 
    } 
} 

或者你也可以做到這一點也很喜歡:jsBin demo using bitwise XOR (^=) and Ternary Operator(?:)

function diffSign(div) {  
    div.innerHTML = (div.io^=1) ? '-' : '+' ; 
} 

https://stackoverflow.com/a/22061240/383904

+2

不值得一個-1,但沒有理由像這樣混淆你的代碼。你所包含的評論並沒有真正解釋代碼的作用。 – Jon 2014-09-30 20:51:40

1
function diffSign(div) { 
    var sign = document.getElementById(div.id); 
    sign.innerText = (sign.innerText === "+") ? "-" : "+"; 
} 

但是如果你通過div,爲什麼你會再次搜索它?

function diffSign(div) { 
    div.innerText = (div.innerText === "+") ? "-" : "+"; 
} 

將工作太如果div參數纔是真正的div ... 確保這div沒有什麼比+-標誌以外的其他..

歡呼。

-2

您可以使用document.getElementById.innerHTML =「您的新文本」........來改變文本。

+0

這改變了整個HTML文檔,而不是特定的文本 – 2014-09-30 21:11:58

0

function diffSign(div) { 
 
    var sign = document.getElementById(div.id); 
 
    if (sign.innerHTML == '+') { 
 
     sign.innerHTML = '-'; 
 
    } else { 
 
     sign.innerHTML = '+'; 
 
    } 
 
}
<div data-toggle="collapse" data-target="#[email protected](i.tostring)" id="[email protected](i.ToString)" onclick=diffSign(this)>+</div>

0

由於DIV是實際的DOM元素和JavaScript對象,你可以直接使用它,並動態屬性添加到它。

function diffSign(div) { 
    //Add a new property to maintain the element's state on the first call, toggle it on subsequent calls 
    div.useMinus = !div.useMinus; 
    //set the text based on the current state. 
    div.innerHTML = (div.useMinus ? '-' : '+'); 
}