2016-12-08 6 views
0

Я следующий код:Выполнение функции Javascript внутри HTML-тегов

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

С яваскриптом функцией:

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

Поскольку строка Java содержит специальные символы, я хочу, чтобы фильтровать их, прежде чем его используется внутри идентификатора. Но поскольку функция Javascript находится внутри тега ID, она видит функцию как строку.

Итак, как я называю яваскрипт функции внутри идентификатора фильтрации коды Java

+0

Почему бы не фильтровать переменную в java напрямую, зачем использовать javascript? – madalinivascu

+0

Потому что мне нужна переменная, включая специальные символы на той же странице. – Jelle

+0

js variable или java? – madalinivascu

ответ

0

Вы не можете выполнять функции JavaScript таким образом. У вас есть два варианта: вы либо делаете это на стороне сервера, используя java, и генерируете id id="${...}", либо вы делаете это на стороне клиента на мероприятии onload.

+0

Первый вариант для меня не является вариантом, так как код находится внутри foreach loop. Я попробую второе спасибо – Jelle

0

Вы можете попробовать вызвать функцию js до загрузки страницы HTML.

Вы можете попробовать написать функцию 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.

<script> 
    function deleteSpecialCharacters(String) { 
     var NewString = String; 
     NewString = NewString.replace(/[^A-Z0-9]+/ig, "_"); 
     return NewString; 
    } 
    $(document).ready(function() { 
     var cleanStr = deleteSpecialCharacters($('#replacement_name').val()); 
     $('.screenshotImg').attr('id', cleanStr); 
    }); 
</script> 

Это будет работать, только если вы уверены, что в этом классе будет только один элемент img.

Лучшим решением является передача фактических и очищенных значений с самого сервера или ознакомление с этой темой Regular expression to remove special characters in JSTL tags.

Смежные вопросы