2013-10-04 120 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

這將有助於repro這在http://jsfiddle.net/和鏈接到那裏的小提琴這裏 –

+0

我只是這樣做排查。 –

回答

2

你選擇HTML應該是這個:

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

你是太早關閉您的函數調用。此外,請注意,我已將外部引號切換爲雙引號並將內引號切換爲單引號。你不需要逃避引號內,這是更傳統的屬性是雙引號而不是單引號..

+0

其實,這只是錯誤的支架:( - 感謝您的幫助! –

0

取代:

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

與此:

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

因爲\是一個轉義字符,並且它導致您的文本爲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可以使用單引號或雙引號。因此,在這種情況下,對於HTML標記和內聯JavaScript中的單引號使用雙引號更爲清晰。