2013-07-02 4 views
0

나는 발사해야하는 텍스트 필드 안에 jQuery를 가지고 있지만 일어날 일이 없도록 고심하고 있습니다. 입력 필드에서 함수 가져 오기

나는 이것을 설명하는 가장 좋은 방법은 몇 가지 코드를 내려 놓고 생각 :

<input type="hidden" id="win-body-tst" value="$("#a").append($("#b"));"> 

<script> function NNNfoo(){ 
    var funcvar = document.getElementById('win-body-tst').value; 
    funcvar 
}</script> 

내가 NNNfoo를 호출하고()을 성공적하지만, APPEND는 동작하지 않습니다.

+0

왜 다른 요소의 'value'안에 다른 요소에 요소를 추가하려고합니까? 또한'value' 속성 안에있는 자바 스크립트는 실행되지 않습니다. 모든 것을 제공하는 것은 문자열입니다. 덧붙여서 당신은'*'속성으로 문자열 내부를 구분하고 있지만, 바깥 쪽 문자열은'''문자로 구분됩니다. 그래서 문자열은 열고 닫아서 잘못된 HTML을 형성합니다. –

+0

양식에 자바 스크립트 코드를 숨겨진 요소로 포함시키는 이유는 무엇입니까? 이것은 심각하게 나쁜 생각입니다. 실행할 코드를 알고 있다면 스크립트에 넣으십시오. 대안이있는 경우 스크립트에 코드를 작성하고 숨겨진 필드 값을 사용하여 선택하십시오. –

답변

1

당신은

function NNNfoo(){ 
    var functionBody = document.getElementById('win-body-tst').value; 
    var func = new Function(functionBody); 
    func(); 
} 

와 함께 할 수 있습니다하지만 당신은 왜 input 요소에서 임의의 코드를 실행 하시겠습니까?

+1

'eval'을 수행하는 것은 오랜 시간이 걸렸습니다. – Quentin

+0

나는 추측한다. 나는 메모리에서'eval'을 완전히 지웠다. :) 그들은 실질적으로 동일하지만 ... (* 스코프 문제 옆에 *) –

+0

고마워. 이 코드를 전역 함수와 함께 사용하여 끝에있는 입력을 바꿉니다. 당신의 도움을 주셔서 감사합니다. –

2

eval은 문자열로 표현 된 JS 코드를 실행합니다 (단, 뒤로 물러나서 다른 방법으로 문제를 해결하려고 시도하지만 일반적으로 사용자에게 JS를 입력하도록 요청하는 것은 좋지 않습니다) .

eval(funcvar); 

는 (당신은 또한이 속성 값 구분자로 행동하지 그래서 &quot;" 같은 데이터를 변환해야합니다).

관련 문제