테스트 사이트 - 개발 중인 베타 버전입니다

자바스크립트 새창 링크와 변수에 대한 질문 드려요. 채택완료

키스 3년 전 조회 2,412

자바스크립트 새창 링크와 변수에 대한 질문 드려요.

 

먼저, PHP는 좀 알지만 자바스크립트는 거의 모르는 상태라는 걸 말씀드립니다. 

어디서 구한 스크립트를 살짝 바꾸려고 하는데요... (굳이 스크립트로 해야 할 사정이 생겨서요.)

 

해야 되는 것은 새창 띄우기변수 추가, 이렇게 두 가지입니다. 

 

</p>

<p><script ></p>

<p>var randomlinks=new Array()</p>

<p> </p>

<p>randomlinks[0]="<a href="<a href="http://www.yahoo.co.kr/" target="_blank" rel="noopener noreferrer">http://www.yahoo.co.kr/</a>" target="_blank"><a href="http://www.yahoo.co.kr" target="_blank" rel="noopener noreferrer">http://www.yahoo.co.kr</a></a>"

randomlinks[1]="<a href="<a href="http://www.daum.net/" target="_blank" rel="noopener noreferrer">http://www.daum.net/</a>" target="_blank"><a href="http://www.daum.net" target="_blank" rel="noopener noreferrer">http://www.daum.net</a></a>"</p>

<p> </p>

<p>function randomlink(){

<strong><span style="color:#e74c3c;">window.location</span></strong>=randomlinks[Math.floor(Math.random()*randomlinks.length)]</p>

<p></script></p>

<p>

 

1. 그런데 이렇게 하니까 현재창에서 그냥 이동해 버리네요.

위 스크립트에서 새창으로 띄우려면 window.location 라인을 어떻게 바꿔야 하나요?

(새탭으로 열리는 것도 괜찮음. 그냥 타겟만 _blank면 돼요.)

 

2. 위 링크에 변수를 추가하려고 합니다. 

예를 들어, randomlinks[0]="여기 링크 부분"에 https://duckduckgo.com/?q=를 변수 val와 연결해서 넣고 싶습니다. 

randomlinks[0]="https://duckduckgo.com/?q="+val; 

이렇게 하면 안 될 거 같구... 어떻게 바꾸는 것이 좋을까요?

 

간단한 거 같은데 스크립트를 몰라서 헤매고 있습니다.

고수님의 고언을 부탁드립니다. 감사합니다. 

 

추: 염치 불구하고 하나만 더 의견을 구합니다. 

현재 검색창의 input id가 sch_stx일 경우, 여기에 "뭐가 입력되어 있는지 아닌지(null인지)"를 알려면 자바스크립트에서 어떤 것을 사용하면 되나요? 대충이라도 좀....

 

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트

</p>

<p><script >

randomlinks = ["<a href="http://www.yahoo.co.kr"," target="_blank" rel="noopener noreferrer">http://www.yahoo.co.kr",</a> "<a href="http://www.daum.net"];" target="_blank" rel="noopener noreferrer">http://www.daum.net"];</a>

function randomlink(){

    window.open(randomlinks[Math.floor(Math.random() * randomlinks.length)]);

}

</script>

<div style="width:80px;padding:10px;border:3px double #cccccc;text-align:center;background-color:#eeeeee;border-radius:5px;cursor:pointer" onclick=randomlink()>클릭</div></p>

<p>

 

window.open("경로"); - 새창으로 열기입니다.

 

두번째 것은 정확히 무언지 모르겠어서...

</p>

<p><script >

randomlinks = ["<a href="https://sir.kr/qa/455659"," target="_blank" rel="noopener noreferrer">https://sir.kr/qa/455659",</a> "<a href="https://sir.kr/qa/454558"];" target="_blank" rel="noopener noreferrer">https://sir.kr/qa/454558"];</a>

page = ["?page=1", "?page=2"];

function randomlink(){

    my = Math.floor(Math.random() * randomlinks.length);

    window.open(randomlinks[my] + page[my]);

}

</script>

<button style=cursor:pointer onclick=randomlink()>클릭</button></p>

<p>

 

보통 php 겟변수를 받을 때는 아래처럼 함수를 만들고

a, b 라는 매개변수를 넣어서 파라미터 처리합니다.

</p>

<p><script >

function randomlink(a, b){

    window.open(a + b);

}

</script>

<button onclick="randomlink('<a href="https://sir.kr/qa/455659?page=','1')">클릭</button>" target="_blank" rel="noopener noreferrer">https://sir.kr/qa/455659?page=','1')">클릭</button></a>




<button onclick="randomlink('<a href="https://sir.kr/qa/454558?page=','2')">클릭</button>" target="_blank" rel="noopener noreferrer">https://sir.kr/qa/454558?page=','2')">클릭</button></a></p>

<p>

 

마지막으로 input 에 담긴 내용은 input 의 아이디가 sir 이라면 sir.value 로 확인합니다.

아래 input 안에 아무 글자나 넣고 클릭해 보세요.

</p>

<p><input id=sch_stx>

<div id=my></div>

<button style=cursor:pointer onclick=my.innerHTML=sch_stx.value>클릭</button></p>

<p>

 

my.innerHTML=sch_stx.value 를 자바스크립트 함수로 만들어서 사용해 됩니다.

</p>

<p><input id=sch_stx>

<div id=my></div>

<script>

function you() {

    my.innerHTML = sch_stx.value;

}

</script>

<button style=cursor:pointer onclick=you()>클릭</button></p>

<p>

 

아니면 온클릭 콜백함수로...

</p>

<p><input id=sch_stx>

<div id=my></div>

<button id=btn style=cursor:pointer>클릭</button>

<script>

btn.onclick = function() {

    my.innerHTML = sch_stx.value;

}

</script></p>

<p>

 

아니면 리스너이벤트를 써도 되고... 등등...

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

키스
3년 전
감사합니다.
상세한 예제 코드까지 달아주시니 공부하는 데에 정말 많은 도움이 되었습니다.
예제에서 얻은 힌트를 이용해서 각종 짜깁기를 했더니 다 해결되었습니다.
다시 한 번 더 감사드립니다!

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인