Цитата:
И можешь еще помочь с отображением, вот написал код на добавление элементов к уже существующей таблице, но не работает. Вот сам код: <html> <head> <style type="text/css"> table,tr,td {border:1px solid black;} </style> <script type="text/javascript"> function zap(){ var h=1; var source = document.all.a.value; var toExecString = "with (Math) return " + source; var result = Function("x", toExecString)(h);//значение x return result; } function zap1(){ var kolvo=6; for(var i=1;i<=kolvo;i++){ zap(); var obEl=document.getElementById("fig"); //обращение к существующей таблице var newRow=obEl.insertRow(i); // создание строки var newCell = newRow.insertCell(0);//создание 1 столбца zap(); newCell.innerHTML=result; // заполнение 1 столбца var newCell = newRow.insertCell(1); //создание второго столбца newCell.innerHTML="2 аналогично 1-ой"; //заполнение 2 столбца document.body.appendChild(obEl);}// делает эл дочерним } </script> </head> <body> <br><br><br><br> <input type="text" value="cos(x)" name="a"> <input type="button" value="запуск" OnClick="zap1()"> <br><br> <table id="fig"> <tr> <td></td> <td></td> </tr> </table><br><br><br><br> </body> </html> |
Цитата:
stringFromInput="cos(x)"//получаем строку из поля ввода result=Function("x", "with(Math) return "+stringFromInput) (1) //1) "with(Math) return "+stringFromInput вычисляется в "with(Math) return "+"cos(x)" //2) "with(Math) return "+"cos(x)" вычисляется в строку "with(Math) return cos(x)" -- строки конкатенируются //3) выражение Function("x", "with(Math) return cos(x)" ) раскрывается в function (x) { with(Math) return cos(x) } //4) выполняется инлайн (function (x) { with(Math) return cos(x) })(1) , происходит подстановка 1 на место x //5) выполняется выражение with(Math) return cos(1), результат возврата записывается в переменную // with(Math) return cos(1), в твоем случае, это то же что return Math.cos(1) Вообще, with, это довольно мудреная конструкция, особенно в плане работы с прототипами и глобальной областью. Но в общем случае, ты можешь считать, что она выполняет выражения-свойства и методы в контексте указанного объекта. например with(Math) alert(sin(1)+cos(1)) Имей в виду, что ее, к сожалению, выкинули из стандарта. Цитата:
|
ОмаЭль,
Ты, кстати, тут и без with мог бы легко обойтись. Тут у тебя она определяющего смысла не имеет, просто сахар, как обычно. stringFromInput="cos(x)"//получаем строку из поля ввода result=Function("x", "return Math."+stringFromInput)(1) alert(result) |
Цитата:
function zap(){ var source = document.all.a.value; var toExecString = "with (Math) return " + source; result = Function("x", toExecString)(h);//значение x h=result; return result; } Область видимости у result спутал, вечером уже не заметил =( На данный момент, есть еще проблемка но сначала попробую решить сам =) |
Часовой пояс GMT +3, время: 09:57. |