2013-07-11 8 views
0

У меня есть div с некоторым примером кода в нем. Я хотел бы выполнить этот код после нажатия кнопки. Вот что я пытался:выполнение некоторого кода внутри функции javascript

HTML

<button onclick="javascript:playcode()"> </button> 

JS

function playcode() { 
    var execcode= ""; 
    for (i=1; i<=countCodeLine(); i++) 
     execcode += document.getElementById("line"+i).innerText; 

    var div= document.getElementById ("mydiv"); 
    var scr= document.createElement ('script', ""); 
    div.innerHTML= "play() {"+execcode+"}"; 
    div.appendChild(scr); 
    play(); 
} 

, но он не работает. Как я могу это сделать?

UPDATE: здесь ошибки из консоли:

(line 9: pre.appendChild(scr)) Uncaught SyntaxError: Unexpected token { 
(line 10: play()) Uncaught TypeError: object is not a function 
+3

У вас возникли ошибки в консоли? –

+2

Что не работает? Вы получаете какие-либо ошибки? (Вам не нужна метка named jump 'javascript:' btw, если вы не используете 'break' или что-то вроде этого). – Thilo

+0

Нет причин, по которым это не работает, за исключением случаев, когда атрибут onclick был изменен или javascript не загружен. – edi9999

ответ

1

Если вы действительно получаете правильный HTML в execcode, вы можете использовать

eval(execcode); 

Вы можете проверить это, просто делает простой console.log(execcode) или alert(execcode), чтобы убедиться, что он правильно загружен.

Однако я могу вам гарантировать, что это почти наверняка очень, очень плохая идея. было бы тривиально, если бы кто-то просто редактировал вашу DOM и вставлял любой вредоносный javascript, который им нужен.

+0

отлично работает .. спасибо – Jannuzzo

+0

, пожалуйста, помните, что вы, вероятно, не должны этого делать в производственной среде. –

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