2013-03-20 97 views
0

我今天編碼,但是當我使用我的下拉列表時,我不工作... 它在我自己寫數字時工作正常。 爲什麼?javascript功能,如果輸入更改

function favBrowser() { 
    var mylist=document.getElementById('myList'); 
    document.getElementById('favorite').value=mylist.value; 
} 
function bar() { 
document.write('Hello World!'); 


<select id="myList" onchange="favBrowser()"> 
    <option></option> 
    <option value="a">a</option> 
    <option value="b">b</option> 
    <option value="c">c</option> 
    <option value="d">d</option> 
    <option value="e">e</option> 
</select> 
<p>heheheh: <input type="text" id="favorite" size="20" oninput="return bar()" onValueChanged="return bar()" value=""></p> 
+0

文件已加載/渲染後不要使用'document.write'。 https://developer.mozilla.org/en-US/docs/DOM/document.write – Ian 2013-03-20 14:38:56

回答

0

select元素沒有值,其中的選項元素有一個值。請嘗試以下代替:

document.getElementById('favorite').value=mylist.options[myList.selectedIndex].value; 

沒有測試,但是這想法

+0

嗯,選擇元素確實有一個值:http://jsfiddle.net/3AsXW/ – Ian 2013-03-20 14:43:29

1

我認爲這是你在找什麼

function favBrowser(list) { 
    document.getElementById('favorite').value=list.value; 
} 


<select id="myList" onchange="favBrowser(this)"> 
    <option></option> 
    <option value="a">a</option> 
    <option value="b">b</option> 
    <option value="c">c</option> 
    <option value="d">d</option> 
    <option value="e">e</option> 
</select> 
<p>heheheh: <input type="text" id="favorite" size="20" value=""></p> 
+0

當我使用我的下拉列表不打印de下拉值,只有undefined? ; o – user2062819 2013-03-20 14:48:41

+0

您的意思是輸入值不會打印下拉列表中的值?你能不能展示你使用的onchange? – 2013-03-20 14:51:40

0

有了這個代碼的html代碼:

<select id="myList" onchange="favBrowser(this.value)"> 
    <option></option> 
    <option value="a">a</option> 
    <option value="b">b</option> 
    <option value="c">c</option> 
    <option value="d">d</option> 
    <option value="e">e</option> 
</select> 

<input type="text" id="favorite" size="20" value=""/> 

您可以做下一個:

function favBrowser(val) { 
    document.getElementById('favorite').value=val; 
} 

每次更改下拉列表的值時,都會自動更改輸入的值,因爲您將發送下拉列表的值作爲參數。

+0

我的問題是,當我的下拉列表更改值沒有任何反應,但是當我在輸入document.write('Hello World!')中寫入自己的值時;顯示 – user2062819 2013-03-20 15:02:29

+0

問題解決! ,非常感謝大家! :D – user2062819 2013-03-20 15:05:32

+0

加載頁面後不要使用document.write。 – 2013-03-20 15:05:59

0

首先,沒有事件onValueChanged;你正在尋找onchange

爲什麼bar()沒有被觸發時,你的下拉腳本改變了favorite值是因爲,當元素的值是通過用戶界面(不是腳本)改變oninput被觸發,並onchange被觸發的原因當發生blur(即,input元素失去焦點)。因此,爲了得到你想要的結果,你需要調用bar()favBrowser()

function favBrowser() { 
    var mylist=document.getElementById('myList'); 
    document.getElementById('favorite').value=mylist.value; 
    bar(); 
} 
+0

嗯,你能寫一個例子嗎?我在這方面是新的:( – user2062819 2013-03-20 15:02:13

+0

問題解決!!!,非常感謝!!:D – user2062819 2013-03-20 15:05:11

+0

問題是,在腳本更改元素的值後,您不能使用'oninput'或'onchange'來執行某些操作就像你想要做的一樣,而只需要腳本就可以做到這一點。 – iamnotmaynard 2013-03-20 15:05:21