您需要了解服務器端和客戶端之間的區別。
服務器端是發生在服務器上的所有事情(例如ASP,ASP.NET,PHP),用於創建發送到瀏覽器的HTML。它還處理用戶提交回來的東西(回發)時瀏覽器返回的信息。
客戶端是一旦收到HTML或者用戶在頁面上點擊某個元素等操作時在瀏覽器上發生的所有事情。
被在服務器上創建此代碼,因此只要瀏覽器而言,文本參數是永遠不會改變(分裂超過能見度線)...
Me.listbox.Attributes("onclick") = "javascript:board_click_button('"
& Me.listbox.SelectedItem.Text & "');"
瀏覽器會收到類似的信息(簡化了可見性)......
<select onclick="javascript:board_click_button('hello world');" ...
相反,你想要什麼,我認爲是這樣的......
Me.listbox.Attributes("onclick") = "board_click_button(this.options[this.selectedIndex].text);"
這樣做將允許javascript使用this
變量(這是導致事件的對象,在本例中爲<select>
)查找當前選定的項目文本。
(另外,請注意你不需要把javascript:
在onclick
類型的事件開始 - 瀏覽器已經知道它的JavaScript你只需把它放在你的<a>
標籤的href
內使用JavaScript。)
UPDATE
這是一個非常快速的測試,工作正常,我(在一個警告框顯示,從已選擇的項目中的文本)...
<asp:ListBox runat="server" onclick="alert(this.options[this.selectedIndex].text);">
<asp:ListItem Value="1">one</asp:ListItem>
<asp:ListItem Value="2">two</asp:ListItem>
<asp:ListItem Value="3">three</asp:ListItem>
</asp:ListBox>
你的答案肯定是擺脫了null,但由於'this.options'中沒有任何內容,所以我仍然得到一個空的文本框。我認爲正在發生的是'onclick'屬性被設置爲'空'選擇,並且每次'onclick'時重新使用該值而不是使用新的選定值。我怎樣才能解決這個問題? – 2012-07-31 13:51:30
@Jesse,你確定'this.options'是空的嗎?我的代碼的全部內容是它應該在'selectedIndex'的選項列表中選取項目。這可能是值得傳遞'這個'作爲參數,然後看看什麼是可用的內部函數(即''onclick =「board_click_button(this);''''board_click_button(ctrl){alert(ctrl.options.length) ;}' – freefaller 2012-07-31 14:00:10
好的,我想我在調試的時候有其他地方存在的問題(我肯定是禁用了某些東西),我會研究它,同時這可能解決了這個問題 – 2012-07-31 14:10:13