0

私のフィドルから

<select id="doesnt-work">
  <option>Apple</option>
  <option>Orange</option>
  <option value="111">Pineapple</option>
  <option>Banana</option>
</select>
<input type="textbox" id="mytextbox"/>
<button onclick="displayResult(doesnt-work)">Click me</button> 

JavaScript

function displayResult(selTag)
{
var x=selTag.options[selTag.selectedIndex].text;
document.getElementById('mytextbox').value = x;
}

「doesnt-work」の間にハイフンがあるため、機能していないことはわかっています

アプリケーションによって自動的に作成されるハイフンを使用する必要があり、それを制御することはできません。

誰も方法を知っていますか?

4

4 に答える 4

2

JavaScript の悪い部分に依存しています。要素 ID を使用して、ブラウザーに自動的に接続させるべきではありません。値を設定するときと同じように getElementById を使用します。

HTML:

<button onclick="displayResult('doesnt-work')">Click

JavaScript:

function displayResult (selId) {
    var selTag = document.getElementById(selId);
    var x=selTag.options[selTag.selectedIndex].text;
    document.getElementById('mytextbox').value = x;
}
于 2013-01-07T17:45:10.333 に答える
1

ハイフンは問題ではありません。ID を文字列として関数に渡す必要があります。

<button onclick="displayResult('doesnt-work')">Click me</button>

選択したテキストを取得するには:

var selectBox = document.getElementById(selTag);
var x=selectBox.options[selectBox.selectedIndex].text;
于 2013-01-07T17:47:23.500 に答える
1

オブジェクト自体ではなく、ID を文字列として渡します。

<button onclick="displayResult('doesnt-work')">Click me</button> 

次に、それを関数内のオブジェクトに解決します

function displayResult(id)
{
var selTag = document.getElementById(id);
var x = selTag.options[selTag.selectedIndex].text;
于 2013-01-07T17:47:34.640 に答える
0

document.getElementById代わりに使用できる場合:

<button onclick="displayResult(document.getElementById('doesnt-work'))">Click me</button>
于 2013-01-07T17:47:10.027 に答える