2013-10-04 3 views
0

이것은 이상합니다 - 나는 뭔가를 놓치고 있어야합니다! 나는 이처럼 간단한 js를 가지고있다.JS 변수가 정의되지 않은 이유는 무엇입니까?

<select onchange='my_function(this.options[this.selectedIndex].value),\"my_text\"'> 

이고 JS는 간단하다.

function my_function(selected, text) { 
    var link="file.php?var1="+selected+"&var2="+text; 
    document.write(link); 
} 

는하지만 내가 잘 작동 거의 동일한 기능을 가지고

정의 = 링크 = file.php?이 var1 = 선택 & VAR2가 계속!

+0

좋은 생각이 아닌 document.write를 사용하면 ... –

+0

http://jsfiddle.net/에서 이것을 repro하는 것이 도움이 될 것입니다. –

+0

나는 그 일에만 집중하고 있습니다. 문제를 해결하십시오. –

답변

2

당신의 선택 HTML이 대신해야한다 : 당신은 너무 일찍 함수 호출을 마감했다

<select onchange="my_function(this.options[this.selectedIndex].value,'my_text')"> 

. 또한, 바깥 쪽 따옴표를 두 배로, 안쪽 따옴표를 한 번으로 바꿨습니다.

<select onchange='my_function(this.options[this.selectedIndex].value),\"my_text\"'> 

를이와 함께 :

<select onchange='my_function(this.options[this.selectedIndex].value),"my_text"'> 

을 대체

+0

실제로, 그것은 잘못 배치 된 브래킷 :(귀하의 도움에 감사드립니다! –

0

.. 당신은 내부 따옴표를 이스케이프 할 필요가 없습니다, 그리고 속성 대신 단일 인용의 인용을 두 번 할 것이 더 기존의 \은 이스케이프 문자이므로 "my_text" 대신 my_text으로 텍스트를 전달하므로 처음에는 올바른 문자열이 아닙니다. 당신은 당신이 다음 견적을 추가 할 필요를 시도하지 필요가 여전히 경우

난 당신이 문자열을 통해 " 견적을 추가하려고 생각하지만, 쿼리 문자열은 기본적으로 문자열입니다 : 당신은 통과하지 않는

<select onchange='my_function(this.options[this.selectedIndex].value),"\"my_text\""'> 
1

함수에 대한 두 번째 값. 그것은 함수 호출 (및 잘못된 마크 업으로 만 행동) 밖에 있습니다. 시도 :

<select onchange="my_function(this.options[this.selectedIndex].value, 'my_text')"> 

나는 여기에 두 가지 변화 :
  1. 은 함수 호출에 my_text 값을 이전.
  2. 따옴표가 변경되었습니다. HTML은 큰 따옴표를, JavaScript는 작은 따옴표 나 큰 따옴표를 사용할 수 있습니다. 이 경우 인라인 JavaScript에서 HTML 마크 업과 작은 따옴표에 큰 따옴표를 사용하는 것이 더 명확합니다.
관련 문제