Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   выполнение кода в строке (https://javascript.ru/forum/dom-window/62034-vypolnenie-koda-v-stroke.html)

Tyoma5891 21.03.2016 19:17

выполнение кода в строке
 
Добрый день всем!
есть такой нтмл код:
<input id="textinput-0" name="textinput-0" type="text" placeholder="placeholder" class="input-xlarge"><div id='resultCalc'></div><br><input type='button' value='Расчитать' class='calculate'>
<div class="CalcSource" style="display:none;">parseInt($('#textinput-0').val())*56</div>
		  <div class="tempCalcSource" style="display:none;"></div>

strSource =eval($(".CalcSource").html());
console.log(strSource);

$( ".tempCalcSource" ).html("<script>$('.calculate').click(function(){$('#resultCalc').html(("+strSource+").toFixed(2));});</script>");

в консоли показывает все красиво и верно parseInt($('#textinput-0').val())*56 а вот само выражение eval(strSource) почему то всегда возвращает NaN также как и при нажатии на кнопку рассчитать? подскажите плиз, что делаю не так, может евал не использовать?
немного изменил код теперь выдает ошибку VM8926:1 Uncaught TypeError: Cannot read property 'toFixed' of undefined

Dilettante_Pro 22.03.2016 11:41

Tyoma5891,
Не совсем понял ваши манипуляции с tempCalcSource - почему просто не разместить скрипт в head
(во всяком случае угловые скобки в тексте надо экранировать)
strSource убрал - иначе ее пришлось бы вставлять внутрь функции обработки click

<!DOCTYPE html >
<html>
<head>
  <title>eval</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
  <script type="text/javascript">
     window.onload = function () {
      $(".tempCalcSource").html("\<script\>$('.calculate').click( function(){$('#resultCalc').html(eval($('.CalcSource').html()).toFixed(2));});\</script\>");
    }
  </script>
</head>
<body>
   <input id="textinput-0" name="textinput-0" type="text" placeholder="placeholder" class="input-xlarge">
   <div id='resultCalc'></div>
   <br><input type='button' value='Рассчитать' class='calculate'>
   <div class="CalcSource" style="display:none;">parseInt($('#textinput-0').val())*56</div>
   <div class="tempCalcSource" style="display:none;"></div>
</body>
</html>

Tyoma5891 22.03.2016 18:53

спасибо за ответ, я нашел ошибку, у меня на странице генерилось 2 инпута с одинаковым айди поэтому евал не выполнялся


Часовой пояс GMT +3, время: 13:21.