Javascript 如何使用现代浏览器(具有shadowDOM内部编辑器)清除输入元素? document.getElementById('taginput').addEventListener('paste',函数(e){ var clipboardData、pastedData、inputdata、tempData、testtags=[]、currentTags=[]、out=''; clipboardData=e.clipboardData | | window.clipboardData; pastedData=clipboardData.getData('Text'); inpudata=document.getElementById('taginput')。value+pastedData; tempData=pastedData.split(','); 对于(var i=0;i

Javascript 如何使用现代浏览器(具有shadowDOM内部编辑器)清除输入元素? document.getElementById('taginput').addEventListener('paste',函数(e){ var clipboardData、pastedData、inputdata、tempData、testtags=[]、currentTags=[]、out=''; clipboardData=e.clipboardData | | window.clipboardData; pastedData=clipboardData.getData('Text'); inpudata=document.getElementById('taginput')。value+pastedData; tempData=pastedData.split(','); 对于(var i=0;i,javascript,shadow-dom,Javascript,Shadow Dom,这是我当前的代码,此实现的问题是This.value='不重置输入字段,并且This.value=tempData[tempData.length-1].trim(); },假)将在输入字段中的userinput之前简单地添加新文本 例如,如果我将apple,apple,orange,banana粘贴到字段中,它将保留并添加banana,并成为banana-apple,apple,orange,banana对于shadow DOM浏览器,您需要: document.getElementByI

这是我当前的代码,此实现的问题是
This.value='
不重置输入字段,并且
This.value=tempData[tempData.length-1].trim();
},假)
将在输入字段中的userinput之前简单地添加新文本


例如,如果我将
apple,apple,orange,banana
粘贴到字段中,它将保留并添加banana,并成为
banana-apple,apple,orange,banana
对于shadow DOM浏览器,您需要:

  document.getElementById('taginput').addEventListener('paste',function(e){
    var clipboardData, pastedData, inputdata, tempData, tempTags = [], currentTags = [], out = '';
    clipboardData = e.clipboardData || window.clipboardData;
    pastedData = clipboardData.getData('Text');
    inpudata = document.getElementById('taginput').value + pastedData;
    tempData = pastedData.split(',');
    for (var i = 0; i < tempData.length - 1; i++) {
      if(tempTags.indexOf(tempData[i].trim()) === -1) tempTags.push(tempData[i].trim());
    }
    Array.prototype.slice.call(document.getElementsByTagName('dynamictags')[0].children).forEach(function(data){
      currentTags.push(data.innerText);
    });
    tempTags.forEach(function(data){
      if (currentTags.indexOf(data) === -1) out += '<res>' + data + '</res>';
    });
    document.getElementsByTagName('dynamictags')[0].innerHTML = document.getElementsByTagName('dynamictags')[0].innerHTML + out;
    this.value = '';
    this.value = tempData[tempData.length - 1].trim();
  }, false);
this.value='';=>注意==是比较运算符,而不是赋值运算符。
setTimeout(function(){
  document.getElementById('taginput').value = tempData[tempData.length - 1].trim();
},0);