2017-04-27 12 views
0

目的:2つのパラメータを比較するコードの文字列があります。いずれかのパラメータが他のパラメータに含まれていない場合は、スクリプトを実行する必要があります。str.indexOfが "関数ではありません"エラーを返す

良いこと:すべてを隠すスクリプト(以下のコードでは、 "if(a> 0);"の後のすべてが完全に機能します)。

問題:私は比較をしようとするのindexOf機能を追加すると、私はというエラーを取得:キャッチされない例外TypeErrorを:私が最初にstrのを試してみました:str.indexOfは、私が試したどのような機能

ではありません.includes関数が、すべてのブラウザでこの関数がサポートされているわけではなく、indexOf関数を実行するように指示されていることが研究によって判明しました。私がオンラインで見つけたものはすべて、indexOf関数が機能するはずです。

私のコードは次のとおりです。

<script language="javascript" type="text/javascript"> 
    var str = [@authfield:Authentications_2_Region]; 
    var a = str.indexOf([@field:Location_2_Region_GL]); 
    if(a > 0); 
    function hide_column(column_order) 
{ 
    var tbl = document.getElementsByTagName("table")[0]; 
    var table_header = tbl.getElementsByTagName('th')[column_order]; 
    table_header.style.display=stl; 
    var rows = tbl.getElementsByTagName('tr'); 
    for (var row=1; row<rows.length;row++) 
     {  
      var cels = rows[row].getElementsByTagName('td'); 
      cels[column_order].style.display=stl; 
     } 
} 

var stl='none'; 
hide_column(0); 
hide_column(1); 
hide_column(2); 
hide_column(3); 
hide_column(4); 
hide_column(5); 
hide_column(6); 
</script> 

私はJavascriptとよくないよ、すべてのヘルプは大歓迎です。

+0

です。この行を変更してみてください。var str = [@authfield:Authentications_2_Region]; 〜var str = [@authfield:Authentications_2_Region] .value();それが動作するかどうかを確認する – Satya

+0

indexOf関数にフィールドを渡し、indexOf関数がフィールドを受け取っていないためにエラーが発生した場合は、@ Satyaの答えを修正してください。 –

+0

"Uncaught TypeError:19.valueは関数ではありません" indexOf関数が得られるまで、すべてのコードが好きだった。私がこの行を変更すると、文字列の前半でエラーが生成され、indexOf関数までは到達しなかった。 –

答えて

0

ありがとう@サティア - 彼は正しい方向に私を得た。私はパラメータを文字列に変換する必要がありました。成功したコードは

<script language="javascript" type="text/javascript"> 
    var str = toString([@authfield:Authentications_2_Region]); 
    var a = str.indexOf(toString([@field:Location_2_Region_GL])); 
    if(a > 0); 
    function hide_column(column_order) 
{ 
    var tbl = document.getElementsByTagName("table")[0]; 
    var table_header = tbl.getElementsByTagName('th')[column_order]; 
    table_header.style.display=stl; 
    var rows = tbl.getElementsByTagName('tr'); 
    for (var row=1; row<rows.length;row++) 
     {  
      var cels = rows[row].getElementsByTagName('td'); 
      cels[column_order].style.display=stl; 
     } 
} 

var stl='none'; 
hide_column(0); 
hide_column(1); 
hide_column(2); 
hide_column(3); 
hide_column(4); 
hide_column(5); 
hide_column(6); 
</script> 
関連する問題