2012-05-07 4 views
0

이 가능 하나이 같은 자바 스크립트 변수가있는 경우 :자바 스크립트 변수 페이지의 '스크립트 태그를'HTML로

var myVariable = "alert('BAM! It works!');" 

은 즉,에서 스크립트 태그가 HTML 페이지로 전송하기를, 다음과 같습니다 <script id="theScriptTag"></script>

및 의한 나는 자바 스크립트 파일에 다음과 같이가는 의미 '전송'

getElementById("theScriptTag").innerHTML = myVariable; 

을 이제 어쩌면 사람들이 일반적으로이 작업을 수행하지 않습니다. HTML 페이지에 Javascript 변수를 가져 오는 또 다른 방법이 있다면 말하십시오. 설명하기가 어렵습니다. 나는 이것을 이렇게하고 싶습니다. 단지 이 필요합니다. 이렇게해야합니다.

미리 감사드립니다. 나는이 볼 수있는 모든 의견에서

편집 ...

은 몇 가지 심각한 나쁜 방법입니다. 나는 당신에게 위에서보기와 '더 큰 그림'을 드리겠습니다 ... 아주 똑같은 HTML 페이지에는 양식과 div가 있습니다. 이제 사용자가 양식을 채우고 제출하면 바로 서버로 이동하고 사용자가 선택한 변수에 따라 '사용자 정의 javascript'가 생성됩니다. 이 사용자 정의 javascript는 클라이언트로 돌아가서 실행하려고합니다. 그것이 실행될 때 Google 차트 테이블을 포함하는 div 요소를 작성/채 웁니다 (따라서 생성 된 서버 측을 얻는 데 필요합니다). 실행해야하는 JS는 다음과 같습니다 : 당신의 목표는 문자열에 포함 된 자바 스크립트 코드를 실행하는 경우

var sendAttemptsChartTableData, sendAttemptsChartTable; 
google.load('visualization', '1', {packages:['table']}) 
google.setOnLoadCallback(drawTable); 
function drawTable() { 
sendAttemptsChartTableData = new google.visualization.DataTable(); 
sendAttemptsChartTableData.addColumn('string','smsGuid') 
sendAttemptsChartTableData.addColumn('string','attemptNo') 
sendAttemptsChartTableData.addColumn('string','response') 
sendAttemptsChartTableData.addColumn('string','error') 
sendAttemptsChartTableData.addRows(1) 
sendAttemptsChartTableData.setCell(0,0,'092A49AA-E2EF-46D3-A83E-0932B17B649A') 
sendAttemptsChartTableData.setCell(0,1,'1') 
sendAttemptsChartTableData.setCell(0,2,'<aatsms><submitresult action="enqueued"  key="2066317199" result="1" number="0833756610"/><submitresult action="enqueued" key="2066317200" result="1" number="0833756610"/><submitresult action="enqueued" key="2066317201" result="1" number="0833756610"/><submitresult action="enqueued" key="2066317202" result="1" number="0833756610"/></aatsms>') 
sendAttemptsChartTableData.setCell(0,3,'') 
sendAttemptsChartTable = new google.visualization.Table(document.getElementById('sendAttemptsTable')); 
var view = new google.visualization.DataView(sendAttemptsChartTableData); 
sendAttemptsChartTable.draw(view, {showRowNumber: true, allowHtml:false}); 
google.visualization.events.addListener(sendAttemptsChartTable, 'select', smsSearchHandler); 
} 
+0

이유는 단지 필요한 변수를 만들 수 있습니까? – KBN

+3

이것은보기에 좋지 않습니다. 저를 믿으십시오, 당신은 이것을하고 싶지 않습니다. 한 발 뒤로 물러서서하려는 일에 대해 다시 생각해보십시오. JS 평가는 일반적으로 나쁜 생각입니다. – Christoph

+0

정확한 해결책이 아닙니다. 이것은'eval()'에서 매우 좁게 제거됩니다. 성취하려는 것을 명확히 할 수 있다면 매우 간단한 방법 일 것입니다. – bkconrad

답변

3

편집 내용에 따라 양식의 sumbission 결과가 맞춤 스크립트로 이해됩니다. JSONP과 같은 솔루션이 효과가 있습니까? 기본적으로 현재 문서에서 스크립트 태그를 만들 수 있습니다. 소스를 양식을 처리하고 코드를 반환하는 서버 측 스크립트로 지정합니다.

기본 예 :

function getScript(){ 
    /**process form, generate params**/ 
    var nwScript = document.createElement('script'); 
    nwScript.src = '/myscriptsrc/somescript.php?'+[generated parameters]; 
    document.body.appendChild(nwScript); 
} 
1

, 다음을 사용할 수 있습니다 : 당신은 무엇을하려고하는

var myVariable = "alert('BAM! It works!');"; 
eval(myVariable); 
+0

팁 올리버 주셔서 감사합니다. 제가하고 싶은 일이 거의 있습니다. 편집을보고 정확히 내가 무엇을보고 있는지보십시오. 끝내고 싶다. – Tiwaz89

1

수행은 기본적으로 이것이다 :

var myVariable = "alert('BAM! It works!');"; 
eval(myVariable); 

eval는 사용자가 제공 한 문자열을 사용하고 내용은 "평가"- 당신이 문자열에 제공하는 자바 스크립트 물건을 실행합니다. 일반적으로 사용자의 입력으로이 작업을 수행하려고합니다.

그러나이 고려 나쁜 습관 때문에 :

  1. 가 느린
  2. 당신이 eval를 사용할 필요가 없습니다

보통 당신이 다른 길을 갈 수 있습니다 안전하지 않은 것입니다 . 대부분의 경우 이것은 더 빠르고, 더 안전합니다.

아마도 당신이 달성하려고하는 것이 무엇인지 말할 수 있습니다. 그런 다음 더 나은 해결책을 찾을 수 있습니다.

+0

안녕하세요 크리스토프, 내 편집을 확인하십시오. – Tiwaz89

+0

@DeanGrobler 안녕 딘, KooiInc의 답변을보세요,이 좋은 해결책이 될 것입니다. 나는 비슷한 것을 할 것이므로, 나는 나의 대답을 편집하지 않고 단지 그의 해결책을 지적 할 것이다. – Christoph