2

YUI を使用してテキスト入力を名前で検索し、その後に div を挿入するにはどうすればよいですか?

たとえば、これは機能しません。

<input name="some_name" type="text">

<script>
var el = new YAHOO.util.Element(document.createElement('div'));
var some_element = document.getElementsByName('some_name');

// doesn't work .... replacing 'some_element' with 'document.body' works
el.appendTo(some_element);

</script>
4

4 に答える 4

4

前述のように、document.getElementsByNameは配列を返します。name属性と同じ名前のIDを入力に与えることができます。(余談ですが、これはフォームでは一般的で良い習慣です。他のjsライブラリは、これを行うときに役立つ拡張機能を提供します。)

<input name="some_name" id="some_name" type="text">
<script>
(function () {
var el = new YAHOO.util.Element(document.createElement('div'));
// var some_element = document.getElementByName('some_name')[0];
var some_element = document.getElementsById('some_name'); // preferred, faster
// el.appendTo(some_element);
YAHOO.util.Dom.insertAfter(el,some_element);
})();
</script>

また、appendToではなくinsertAfterが使用されていることに注意してください。elをinput要素の子にしたくありません。あなたはそれを次の兄弟にしたいのです。入力には子がありません。また最後に、これらの変数をグローバル名前空間に追加します。これは問題になる場合とそうでない場合がありますが、変数にグローバルスコープを設定して後で再利用する場合を除いて、コードを無名関数でラップすることをお勧めします。ただし、変数に適切な名前空間を指定することをお勧めします。 。

それがお役に立てば幸いです(そしてあまり多くの情報はありません。);)

于 2009-05-29T07:45:18.523 に答える
1

document.getElementsByName('some_name') は常にコレクション (配列) を返します。名前が一意であることが確実な場合は、これを安全に記述できます。

var some_element = document.getElementsByName('some_name')[0];
于 2009-05-29T06:56:21.573 に答える
0

基本的に条件を付けて name="some_name" とします。
以下のコードを見て、まだ挿入されていることを確認してください

段落。

<script src="http://yui.yahooapis.com/3.18.1/build/yui/yui-min.js"></script>

<input id="some_id" type="text" name="inpuname" >

<script>
  YUI().use('node', function(Y) {
    var contentNode = Y.Node.create('<p>');
    contentNode.setHTML('Paragraph created by YUI by searching for *INPUNAME*...');
    Y.one('input[name="inpuname"]').insert(contentNode, 'after');
  });
</script>

于 2015-09-04T04:54:21.377 に答える