использовать eval для оценки фрагмента JavaScript в текстовой области? - PullRequest
1 голос
/ 25 марта 2012

Я на своем первом хакатоне и пытаюсь закончить свой проект.Я очень новый Javascript ... все, что я знаю, я узнал буквально за последние 2 часа.При этом ...

Итак, я знаю, что eval - не самая лучшая вещь для использования, но я пытаюсь написать простую программу, в которой вы можете ввести фрагмент кода JavaScript в текстовое поле, щелкнуть на кнопке «Выполнить».кнопку, и пусть JavaScript выполняется внутри другой текстовой области.Я пытаюсь пока держаться подальше от jquery, потому что я хочу изложить действительно базовую идею, прежде чем добавить еще один уровень сложности, поэтому я не использую идентификаторы .... но если jquery - единственный способчтобы сделать это, тогда, я думаю, мне придется пони и изучить его в течение следующих 8 часов.

Код следующий (ish):

function executeJS ()
{
    var result = eval(game.input.value);
    game.execute.value=result;
}
<head>
    <body>
    <H1>PRogram</H1>
            <form name="game"> 

            <textarea name="execute" rows="5" cols="30" value=""></textarea><br>
            <textarea type="text" name="input" rows="10" cols="30" value=""></textarea>

            <input type = "button" value = "guess" onclick = "executeJS()</input>
            </form>
    </body>
</head>

Я не получаювывод в моем окне выполнения.

Любое понимание будет высоко ценится.

Ответы [ 2 ]

2 голосов
/ 25 марта 2012

Вот рабочая версия .Однако я бы пересмотрел вашу идею не использовать идентификаторы или библиотеки:

function executeJS() {
    var game = document.forms['game'];
    var result = eval(game.input.value);
    game.execute.value = result;
}

И с осторожностью относитесь к eval.

2 голосов
/ 25 марта 2012

«игра» не является переменной. это имя элемента DOM.
если вы хотите получить его объект, присвойте ему идентификатор, скажем, "game", и используйте document.getElementById('game')

  • Обратите внимание, что ваш <head> окружает <body>
  • Ваш код JavaScript не находится внутри тега <script></script.
...