<div contenteditable="true">
</div>
var selection = document.getSelection(),
range = selection.getRangeAt(0);
var html = '<blockquote>' + range + '</blockquote>';
range.deleteContents();
el.innerHTML = html;
while ( (start = el.firstChild) ) {
last = fuckjs.appendChild(start);
}
range.insertNode(fuckjs);
我利用getSelection
和 getRangeAt
寫了一個很簡易的editor
可以把對象添加 「blockquote
」tag,只是...
問題1
如何實現再按一下,就可以變回原本狀態?(去除 blockquote
)
能用什麼函數做到這點呢?
問題2
加入 blockquote
的時候他會溢出 div ,這能怎麼解?
問題1
如何實現再按一下,就可以變回原本狀態?(去除 blockquote )
能用什麼函數做到這點呢?
早上看到這題覺得很好玩
所以剛剛來實際玩一下
先把輸入的區域加入監聽
在用一個Array
當做暫存器
每次輸入都會對Array
push
然後上一步和下一步
使用一個變數來記錄你做到哪一步
程式碼
<button id="prev" type="button">
上一步
</button>
<button id="next" type="button">
下一步
</button>
<br><br>
<textarea id="text" rows="20">
</textarea>
JS
var text = $("#text");
var prev = $("#prev");
var next = $("#next");
var step = -1;
var stepArray = new Array();
// 輸入框加入監聽
text.on("input", ()=>{
console.log(text.val());
// 每次輸入都push進array
stepArray.push(text.val());
// 每次push都步驟都+1
step++;
})
// 上一步按鈕
prev.click(()=>{
if(step == -1)
alert('沒有上一步');
else{
step--;
text.val(stepArray[step]);
}
})
// 下一步按鈕
next.click(()=>{
if(step > stepArray.length-2)
alert('沒有下一步');
else
{
step++;
text.val(stepArray[step]);
}
})