выполнение кода в строке
Добрый день всем!
есть такой нтмл код:
<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 |
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>
|
спасибо за ответ, я нашел ошибку, у меня на странице генерилось 2 инпута с одинаковым айди поэтому евал не выполнялся
|
| Часовой пояс GMT +3, время: 18:06. |