3

私はJavascriptを使用してHTMLDOM要素を作成しています(はい、それは厄介です)。
select要素を作成することはできますが、onchangeプロパティを追加することはできません。

例:

var sel = document.createElement('select');
sel.id = 'someID';
sel.title = 'Some title';
sel.style.fontWeight = 'bold';
sel.size = 1;

オプションを追加して実行する
document.getElementById('someOtherID').appendChild(sel);
と、select要素が取得されます。

私がやりたいのは、上記のAに、次のように追加する
sel.onChange = 'someJavascriptFunction()';
ことです。しかし、それは好きではありません。

私は広場の外で考えるべきですか?どれ?

4

4 に答える 4

3

イベント名は小文字である必要があり、文字列の代わりに関数を割り当てる必要があります。

sel.onchange = someJavascriptFunction;

やるべきことがもっとある場合は、無名関数を割り当てることができます。

              //  v----assign this function
sel.onchange = function() {
    // do some work
    someJavascriptFunction();  // invoke this function
};
于 2013-02-24T03:42:15.133 に答える
0

次のようなことをする必要があります。

sel.onChange = someJavascriptFunction;

(後に括弧がないことに注意してsomeJavascriptFunctionください。これは、関数の呼び出しではなく、関数をアタッチしていることを意味します。

于 2013-02-24T03:35:32.103 に答える
0

複数の関数をそのイベントにバインドする可能性がある場合は、この少し長いメソッドを使用することをお勧めします。

if (sel.addEventListener) {
    sel.addEventListener('change', changeFunction, false);
} else if (sel.attachEvent) {
    sel.attachEvent('onchange', changeFunction);
} else {
    sel.onchange = changeFunction;
}
于 2013-02-24T03:54:57.627 に答える
0

すべてを行うためのより簡単な方法は次のとおりです。すでにページのどこかにあります。

<div id = someContainer> </ div>

次に、JavaScriptでこれを行います。

document.getElementById('someContainer')。innerHTML = "<select id = someId title ='some title' size = 1 style ='font-weight:bold' onchange ='someJavascriptFunction()'>";

またはもっとゆっくり:

var html = "<select id = someId title ='some title' size = 1 style ='font-weight:bold' onchange ='someJavascriptFunction()'>";

var someContainer = document.getElementById('someContainer');

someContainer.innerHTML = html;

document.getElementById()は非常に一般的であるため、jqueryのようなライブラリや、$('someContainer')のように簡単に実行できるプロトタイプがある場合や、自分で定義する場合があります(var $ = document.getElementById;)。

innerHTMLは、すべてのdom要素の疑似変数であり、実行する要素内のすべてのhtmlを返すか設定します。任意の長さのHTMLを渡すことができます。必要に応じて、ページ全体を渡すことができます。そして、あなたはhtmlテキストを構築するための巧妙なプログラムを書くことができます、彼らはホーガン(グーグルそれ)のようなテンプレートシステムさえ持っています。

于 2013-10-17T06:01:20.553 に答える