2013-05-15 4 views
1

사용자가지도의 높이와 너비를 입력하는 텍스트 상자에 html 코드를 넣고 싶습니다. 그리고 전달 된 변수를 처리하고 값을 기반으로지도를 생성하는 자바 스크립트 코드를 원합니다.자바 스크립트 페이지 리로드로 같은 페이지를 통해 변수를 전달하는 방법?

여기 내 문제입니다. clunky prompt() 함수를 사용하고 싶지 않습니다. 정말 짜증이 나서 매우 제한적입니다. form 태그를 사용하고 제출 버튼을 누르면 페이지가 새로 고쳐지기를 원하지만 나는 아무것도 제출하지 않고 스크립트에만 변수를 전달합니다.

모든 것이 자바 스크립트로 이루어지기 때문에 서버 나 모든 종류의 데이터베이스로 전송할 것이 없기 때문에 모든 페이지를 다시로드하거나 새로 고치지 않고 결과를 모두 확인해야합니다. 사용자가 버튼을 클릭 한 직후에 표시됩니다.

어떻게하면됩니까?

<script> 
function validateInput() { 
// check if the values are numbers if not generate an error and return a false value 
} 
function getMapSize() { 
// get the user input data and return it as an array 
} 

function generateMap() { 
var map = []; 
map = getMapSize(); 
// generate the map and show the result on current page 
} 
if (variables are set and they are numbers) { 
generateMap(); 
} 
</script> 
Height:<input id="mapSize" name="mapHeight" type="text"></input> 
Width:<input id="mapSize" name="mapWidth" type="text"></input> 
+0

개의 유사한 질문이 있습니다 더 : http://stackoverflow.com/questions/16082357/pass-data-from-a-dynamically- one-page-to-another 또는 http://stackoverflow.com/questions/16264253/sharing-a-variable-between-multiple-html-pages 또는 http://stackoverflow.com/questions/에서 생성 된 목록 3724106/두 HTML 페이지 간의 교환 방법 변수 또는 http://stackoverflow.com/questions/16328717/pass-arguments-from-one-html-page-to-the-other – Xotic750

+0

무엇이 있습니까? 당신은 시도 했습니까? 네가 무엇을하려고하는지조차 모르겠다. – Xotic750

+0

이미지를 사용하고 사용자 입력을 기반으로 그래픽 2 차원 맵을 생성하는 간단한 스크립트를 작성하려고합니다. 사용자는지도를 편집 할 수 있으며, 완료되면 자신의 컴퓨터에지도를 저장할 수 있습니다. – ilgaar

답변

1

Niels와 마찬가지로 <button onclick="getMapSize()" >Generate map</button>
Btw를 사용할 수 있으며 입력 요소의 ID를 고유하게 유지해야합니다. 당신은이 같은 UserInput 사용자가 뭔가 얻을 수 있습니다 : 나는 확신

<script> 

function getMapSize() { 
    var height = document.getElementById('mapHeight').value; 
    var width = document.getElementById('mapWidth').value; 

    if (validateInput(height) == true && validateInput(width) == true) { 
     generateMap(height, width); 
    } 
} 

function validateInput(input) { 
    // Validate input... 

    if (isValid) { 
     return true; 
    } else { 
     return false; 
    } 
} 

function generateMap(height, width) { 
    // Generate map with the given height and width 
} 

</script> 
+0

확인. 응답 해 주셔서 감사합니다. 그렇다면이 잘못된 물건에 대한 거래는 무엇입니까? 내 스크립트에 어떤 영향을 줍니까? 단순히 게시물을 다시 막는 것입니까? – ilgaar

+0

'

1

여기에는 여러 가지 방법이 있습니다. 양식의 onsubmit을 패치하거나 끝에 false을 반환하거나 양식을 완전히 생략하고 <button> 요소의 onclick에 대해 조치를 취할 수 있습니다. 그것들은 모두 비슷한 솔루션이며, 최선의 구현은 전체 구현에 달려 있습니다. 물론 당신이 진짜 코드에서 자바 스크립트를 분리하기 위해 밖으로 onclick 코드를 분할 것

<label>Width: <input type="number" id="width" value="5"></label><br> 
<label>Height: <input type="number" id="height" value="5"></label><br> 
<button onclick="$('output').set('text', 'Surface size is ' 
       + ($('width').value * $('height').value));">Click me!</button> 
<div id="output">Not clicked yet</div> 

:

가 나는 버튼으로 작업을 수행하는 방법을 보여 a small sample here을 채찍질 코드로 요약된다. 샘플을 Mootools로 채웠지 만 jQuery 또는 비 라이브러리 JS에 쉽게 적용 할 수 있습니다.

+0

데이터 유효성 검사를 모두 처리 한 다음 일부 계산 후에 여러 값을 반환하는 단일 함수가 있다면 어떻게됩니까? 함수가 반환하는 값은 추출 할 수 있지만 반환 값을 추출하는 방법은 무엇입니까? – ilgaar

+0

다음과 같이 말합니다. function getCoordinates() { var x; var y; var bitMapAddress; // 사용자 데이터 가져 오기 // 데이터가 유효한지 확인하십시오. if (데이터가 유효하지 않습니다) { document.getElementById ('someId'). InnerHTML = "오류!"; false를 반환합니다. // <---이 함수는 끝나고 나머지 명령문은 실행되지 않습니까? } // 데이터가 유효 할 경우에만 아래 명령문이 실행된다고 가정하면 if 문이 있어야합니다. // 일부 계산 bitMapAddress = x + y * (x + 1); // 데이터 처리 return [x, y, bitMapAdress, false] // <--- 이것이 올바른 방법입니까? 게시물을 방지하기 위해 false를 반환할까요? – ilgaar

+0

그래서이 함수는 세 개의 값을 다른 함수로 전달하지만 동시에 post back을 방지하기 위해 false를 반환합니다. 나는 어떻게해야합니까? 아니면 이것이 올바른 접근 방식이 아니며 이러한 모든 작업은 각각의 기능으로 처리되어야합니다. – ilgaar

관련 문제