2016-12-11 54 views
-2

我對JavaScript有一個小問題。我想添加字符串(格式:一二三)的列表,但這削減了符號(「 - 」)和每個元素標籤添加。我試着解決這個問題,不幸的是沒有成功。在這裏我的功能:如何使用javascript在列表中添加剪切字符串?

功能listAdd(){

var string = document.forms["form1"].elements["stringAdd"].value; 
if(string != ""){ 
    var array = string.split(""); 
    var eredmeny = array.some(function(v) { return v == "-";}); 
    if(eredmeny){ 
     for(var i = 0; i <array.length; i++){ 
      if(array[i] != "-"){ 
       var newElement = document.createElement('li'); 
      array[i] = array.toString(); 
      newElement.textContent = array[i]; 

      var list = document.getElementById("gyumi"); 
      list.appendChild(list.createTextNode(array[i])); 
      } 
     } 
    } 
    else{ 
     var newElement = document.createElement('li'); 
     newElement.textContent = szoveg; 

     var list = document.getElementById("gyumi"); 
     list.appendChild(newElement); 
     } 



    } 

}

對不起,我可憐的英語,這是我的第一個問題。

+1

我不明白你到底做 – mattias

回答

0

我想你是說你有一個像"one-two-three"一個字符串,並要分割,截至上-並添加導致"one""two""three"到列表中。

如果是這樣,您想要使用split("-")而不是split(""),並且您不需要some來檢查-。此外,您還可以使用createTextNode把列表中的項目內容(textContent是不是跨瀏覽器兼容),你只需要得到列表一次:

function listAdd() { 
 
    var string = document.forms["form1"].elements["stringAdd"].value; 
 
    if (string != "") { 
 
    var list = document.getElementById("gyumi"); 
 
    string.split("-").forEach(function(entry) { 
 
     var newElement = document.createElement('li'); 
 
     newElement.appendChild(document.createTextNode(entry)); 
 
     list.appendChild(newElement); 
 
    }); 
 
    } 
 
} 
 
listAdd();
<form name="form1"> 
 
    <input type="text" name="stringAdd" value="one-two-three"> 
 
</form> 
 
<ul id="gyumi"></ul>

即使工作有字符串中沒有-,因爲split("-")將數組中是否有字符串中沒有-只返回一個元素。

+1

謝謝你的回答! :)它解決了我的問題。 –

1

我在這裏的假設是,你想從一個由分隔字符串創建li項目「 - 」字符。如果這是真的,請參閱以下內容:

您可以按照您使用的.split()函數將字符串拆分爲它的子組件,然後遍歷這些元素並創建列表項並將它們附加到文檔主體。

var mystr = 'one-two-three'; 
 

 
var components = mystr.split('-'); 
 

 
components.forEach(function(comp){ 
 
    var item = document.createElement('li'); 
 
    item.textContent = comp; 
 
    // set your attrs on the item here 
 
    document.body.appendChild(item); 
 
});

+0

的OP的使用'textContent'良好。不要爲此使用'innerHTML'。 – trincot

+0

謝謝你的回答。這解決了我的問題。 –

0

你可以用split做到這一點,但如果你通過-拆分變得輕鬆了許多。然後你就可以得到你想要添加到列表中的值。

其次,如果你在運行時表單提交,或在表單按鈕的點擊此功能,請確保取消表單提交。

最後,你會想在輸入清除時,該項目已被添加到列表中。

function listAdd() { 
 
    var inp = document.forms["form1"].elements["stringAdd"]; 
 
    var list = document.getElementById("gyumi"); 
 
    var string = inp.value; 
 
    if (string != "") { 
 
     string.split('-').forEach(function (item) { // split by the hyphen 
 
      var newElement = document.createElement('li'); 
 
      newElement.textContent = item; 
 
      list.appendChild(newElement); // not a text node 
 
     }); 
 
    } 
 
    // clear input once you have added the items: 
 
    inp.value = ''; 
 
    return false; // cancel form submission 
 
}
<form id="form1" onsubmit="return listAdd()"> 
 
    Items: <input name="stringAdd"> [Press enter to add] 
 
</form> 
 
<ul id="gyumi"></ul>

相關問題