js 關于dom
可編輯的div
// 加上contenteditable="true"即可,需要注意的是內部添加的子元素默認也可編輯 <div contenteditable="true" class="edit"></div>
<script>
var div = document.querySelector(".edit");
// 創建一個MutationObserver實例
var observer = new MutationObserver(this.divcontentchange);
// 開始監聽盒子的變化
observer.observe(div, {
characterData: true, // 監聽字符數據變化
childList: true, // 監聽子節點變化
subtree: true // 監聽子樹的變化
});
//盒子內容變化
divcontentchange(mutations) {
mutations.forEach(function (mutation) {
console.log("盒子內容發生了變化!", mutation);
console.log("新的內容是:" + mutation.target.textContent);
});
}
</script>
div設置光標位置
<div contenteditable="true" id="editor"></div> <script> let editor = document.getElementById('editor'); // 將光標設置到開頭 editor.focus(); let range = document.createRange(); range.selectNodeContents(editor); range.collapse(true); let sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); // 將光標設置到結尾 editor.focus(); range = document.createRange(); range.selectNodeContents(editor); range.collapse(false); sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); // 將光標設置到指定位置 editor.focus(); range = document.createRange(); range.setStart(editor.childNodes[3], 5); range.collapse(true); sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); </script>
js 創建dom
var myDiv = document.querySelector(".edit"); //創建dom var newspan = document.createElement("span"); //添加標簽屬性 newspan.setAttribute("contenteditable", false); //添加類名 newspan.className = “classname”; //添加內容 newspan.innerText = treeItem.treealias; //添加節點 myDiv.appendChild(newspan); // 獲取myDiv下所有子元素 var childElements = myDiv.children; //獲取父元素下最后一個子元素 var lastChildElement = myDiv.lastElementChild; //刪除指定子元素 myDiv.removeChild(lastChildElement);
獲取盒子樣式屬性
<input class="input" style="top: 0;left: 7px" v-model="text" autofocus ref="input" type="text" ></input> <script> //這里必須是行內樣式才能獲取到 //提前寫了絕對定位,這里演示改變left值 let input = this.$refs.input; let top = input.style.getPropertyValue("top"); //獲取樣式屬性top let left = input.style.getPropertyValue("left"); //獲取樣式屬性left let left_i = left.indexOf("p"); let left_num = parseInt(left.slice(0, left_i)); //處理成數值 input.style.left = left_num + offset + "px"; </script>

浙公網安備 33010602011771號