鍍金池/ 問答/Linux  HTML/ DOM操作中直接用ele.value賦值和用setAtrribute(&quot

DOM操作中直接用ele.value賦值和用setAtrribute("value","xxx")有什么區(qū)別嗎

比如我要設(shè)置一個input顯示的值,獲得焦點后清空顯示的值,如果Input沒有輸入就失去焦點,繼續(xù)顯示默認(rèn)值

用setAtrribute會出現(xiàn)這樣的情況

我在input里輸入了內(nèi)容,然后又刪除掉,再失去焦點的時候,input顯示的值不會變成默認(rèn)值,而是什么都不顯示

用ele.value=xxx就沒問題


<input type="text" value="這是屬性" onfocus="f1()" onblur="f2()">



    function f1() {
        var ele=document.getElementsByTagName("input")[0];
        if(ele.value===ele.defaultValue){
            ele.value="";
        }
        }
   function f2() {
            var ele=document.getElementsByTagName("input")[0];
    if(ele.value===""){
        ele.value=ele.defaultValue;
    }
}
回答
編輯回答
雨萌萌

setAttribute()方法修改的是input 的默認(rèn)屬性,也就是說在聚焦時將input的defaultValue屬性設(shè)置為了空字符串,可使用變量先將value存儲。

let defaultValue = document.getElementsByTagName('input')[0].defaultValue;

function f1() {
  var ele = document.getElementsByTagName("input")[0];
  if (ele.value === ele.defaultValue) {
    ele.setAttribute('value', '');
  }
}
function f2() {
  var ele = document.getElementsByTagName("input")[0];
  if (ele.value === "") {
    ele.setAttribute('value', defaultValue);
  }
}
2017年6月7日 06:38