2017-03-03 28 views
0

我有這個JavaScript函數; 我從一個按鈕發送一個數字,並一切順利,直到它有一個問題的索引方法。Javascript indexOf並替換 - 我錯過了什麼

CODE:

<script lang="ja" type="text/javascript"> 


    function YellowChair(NumId) 
    { 
     if (document.getElementById("CheckBox" + NumId).checked) 
     { 
      document.getElementById("ChairImg" + NumId).src = "Images/YellowChair.png"; 
      TypeTheNum(NumId, true); 
     } 
     else 
     { 
      document.getElementById("ChairImg" + NumId).src = "Images/BlueChair.png"; 
      TypeTheNum(NumId, false); 
     } 

    } 
    function TypeTheNum(NumId,Add) 
    { 
     var Label = document.getElementById("SelectedSitsLabel"); 
     var Hidden = document.getElementById("SelectedSitsHidden"); 


     if (Label.innerHTML == "") 
     { 
      Label.textContent += NumId; 
      Hidden.textContent += NumId; 
     } 
     else 
     { 
      if (Add) 
      { 
       Label.textContent += "," + NumId; 
      } 
      else 
      { 
     // getting stuck here. 
       if (Label.indexOf((NumId + ",").toString()) != -1) 
       { 
        alert("1"); 
        Label.replace((NumId + ",").toString(), ""); 
       } 
       else 
       { 
        alert("ELSE"); 
        Label.replace(("," + NumId).toString(), ""); 
       } 
      } 
     } 
     Hidden.textContent = Label.textContent; 
    } 


</script> 

我想也許它是因爲我用的textContent插入文本, 也,即時通訊相當肯定的財產以後是錯誤的replace

非常感謝!

回答

1

HTMLElement沒有一個方法indexOf。 String擁有method.remeber重置textContent如果textContent更改。

function YellowChair(NumId) 
 
    { 
 
     if (document.getElementById("CheckBox" + NumId).checked) 
 
     { 
 
      document.getElementById("ChairImg" + NumId).src = "Images/YellowChair.png"; 
 
      TypeTheNum(NumId, true); 
 
     } 
 
     else 
 
     { 
 
      document.getElementById("ChairImg" + NumId).src = "Images/BlueChair.png"; 
 
      TypeTheNum(NumId, false); 
 
     } 
 

 
    } 
 
    function TypeTheNum(NumId,Add) 
 
    { 
 
     var Label = document.getElementById("SelectedSitsLabel"); 
 
     var Hidden = document.getElementById("SelectedSitsHidden"); 
 

 

 
     if (Label.innerHTML == "") 
 
     { 
 
      Label.textContent += NumId; 
 
      Hidden.textContent += NumId; 
 
     } 
 
     else 
 
     { 
 
      if (Add) 
 
      { 
 
       Label.textContent += "," + NumId; 
 
      } 
 
      else 
 
      { 
 
     // getting stuck here. 
 
       if (Label.textContent.indexOf((NumId + ",").toString()) != -1) 
 
       { 
 
        alert("1"); 
 
        Label.textContent=Label.textContent.replace((NumId + ",").toString(), ""); 
 
       } 
 
       else 
 
       { 
 
        alert("ELSE"); 
 
        Label.textContent=Label.textContent.replace(("," + NumId).toString(), ""); 
 
       } 
 
      } 
 
     } 
 
     Hidden.textContent = Label.textContent; 
 
    }
<button onclick="TypeTheNum('foo')">Remove `foo`</button> 
 
<div id="SelectedSitsLabel">foo,bar,baz</div> 
 
<div id="SelectedSitsHidden"></div>

+0

好,但爲什麼更換dowsnt工作? –

+0

Simlarly'indexOf','HTMLElement'沒有方法'replace',但'String'有。 –

1

功能:

var element = document.getElementById(id); 

返回一個元素對象,或者爲null但不是一個字符串。

也許你想改變你的代碼,使用textContent財產,這似乎是您正在使用的像一個:

if (Label.textContent.indexOf((NumId + ",").toString()) != -1){ 
    alert("1"); 
    Label.textContent.replace((NumId + ",").toString(), ""); 
} 
else{ 
    alert("ELSE"); 
    Label.textContent.replace(("," + NumId).toString(), ""); 
} 
1

標籤是一個DOM元素,而不是一個字符串。因此,如果您需要從元素內的文本中獲取字符,則必須使用類似var content = Label.textContent; content.indexOf()之類的字符,然後在將字符串替換爲textContent後再次替換它。

同樣作爲一個旁註,嘗試查找innerHTML,textContent和innerText之間的差異,以便您可以避免將來的問題。

1

您需要更換指定的東西:

Label.textContent = Label.textContent.replace(…)