2017-03-03 6 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> 

私は多分その私は気にいらないがreplaceと間違っているかなり確信してイム、またのTextContent、 でテキストを挿入するので、思いました。

多くの感謝!

答えて

1

HTMLElementにはindexOfメソッドがありません。 StringtextContentが変更された場合は、method.remeberリセット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

[OK]を、なぜdowsnt仕事を置き換えますか? –

+0

単純に 'indexOf'、' HTMLElement'には 'replace'メソッドはありませんが、' String'にはあります。 –

1

機能:

var element = document.getElementById(id); 

要素オブジェクト、またはnullではなく、文字列を返します。

たぶん、あなたはあなたのように作業している1であるように思わ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(…)

関連する問題