2016-12-08 16 views
0

私は次のコードを持っている:javascript関数でhtmlタグ内のJavaScript関数を実行

<h2> <c:out value="${Name}"/> </h2> 
<img id="deleteSpecialCharacters('screenshot0<c:out value="${Name}"/>Preview')" class="screenshotImg" src="#" alt="screenshot"/> 

:Java文字列に特殊文字が含まれているので

function deleteSpecialCharacters(String) { 
     var NewString = String; 
     NewString = NewString.replace(/[^A-Z0-9]+/ig, "_"); 
     return NewString; 
    } 

を、私はその前にそれらをフィルタリングしますIDの内部で使用されます。 しかし、Javascript関数はIDタグの内部にあるため、関数は文字列として認識されます。

だから私は、Javaコード

+0

なぜJavaで変数を直接フィルタリングしないのですか?なぜjavascriptを使用しますか? – madalinivascu

+0

私は同じページに特殊文字を含む変数が必要なので – Jelle

+0

js変数かjava? – madalinivascu

答えて

0

をフィルタリングID内のJavaScript関数を呼び出すか、どのようにこのようなJavaScript関数を実行することはできません。 2つの選択肢があります:サーバー側でjavaを使用してIDを生成するか、ID id="${...}"を生成するか、onloadイベントでクライアント側で行います。

+0

最初のコードは、 foreachループ。私は2番目に感謝します。ありがとう – Jelle

0

HTMLページが読み込まれる前にjs関数を呼び出してみることができます。

体のすぐ後ろにあるjavascript関数deleteSpecialCharactersを試してみることができます。

<body> 
<script type="text/javascript"> 
    your js function 
</script> 

0
<h2> <c:out value="${Name}"/> </h2> 
<img class="screenshotImg" src="#" alt="screenshot"/> 
<input type="hidden" id="replacement_name" value='screenshot0<c:out value="${Name}"/>Preview'/> 

次に、非表示フィールドの値を読み取ってjavascriptメソッドに渡し、結果の値をidとしてimg要素に割り当てます。

これは、そのクラスにimg要素が1つしかないと確信できる場合にのみ機能します。

解決策は、サーバー自体から実際の値やクリーニング済み値を渡すことです。このスレッドを見てください。 Regular expression to remove special characters in JSTL tags

関連する問題