0
function insertChildDiv(parentId)
{
  var ChildComment = new Element('div', {'class':'padding'});
  ChildComment.update('testing');
  $().insert(ChildComment);
}

行の $() 内のparentIdの値が必要です

$().insert(ChildComment);

私はすでに試しました

$('parentId').insert(ChildComment);

ただし、parentId を文字列として評価し、「parentId」の要素 ID を持つ div を探しているため、エラーは $("parentId") is null になります。

も試した

$(parentId).insert(ChildComment);

しかし、 「$(parentId).insert は関数ではありません」というエラーが返されます

ところで、スクリプトはこのhtmlによって呼び出されます

<a href="#" onclick="insertChildDiv(123456)" id="123456more">Replies and more</a>
4

6 に答える 6

2

$() は、文字列または DOM 要素をパラメーターとして受け入れます

元の Q の編集を反映するように編集されました。

$(parentId) は、ID が有効である限り機能します。

関数に渡される ID は「123456」で、探している ID は「123456more」です。また、渡しているのは文字列ではなく整数 (123456) です。いずれにせよ、それらが一致しないため、プロトタイプはそれを見つけていません。また、id は数字で始めるべきではありません: w3c の仕様では id 属性を数字で始めることはできないと言われているため、IE8 は失敗します (正しく思い出せば)。

htmlを次のように変更してみてください

<a href="#" onclick="insertChildDiv('more123456')" id="more123456">Replies and more</a>

そしてそれはうまくいくはずです

于 2009-05-26T13:32:21.970 に答える
1

これは救助に。「this」は要素自体を参照するため、文字列ではなく要素参照を関数に渡します。

<div onclick="insertChildDiv(this)">###</a>

<script type='text/javascript'>
function insertChildDiv(element) {
    $(element).insert(new Element('div',{'class':'padding'}).update('testing'))
}

// or if you want to add an ID:

function insertChildDiv(element) {
    $(element).insert(new Element('div',{'class':'padding',id:'more'+element.id}).update('testing'))
}

</script>
于 2009-05-26T14:41:01.160 に答える
0

元の関数は、 $() に渡された引数で動作します ...

function insertChildDiv(parentId)
{
  var ChildComment = new Element('div', {'class':'padding'});
  ChildComment.update('testing');
  $(parentId).insert(ChildComment);
}

テストケースは次のとおりです。

$() に変数を渡す

于 2009-05-26T18:36:52.980 に答える
0

parentId の値は、これ<a href="#" onclick="insertChildDiv('more123456')" id="more123456">Replies and more</a>が配置されている div の ID です。このparentIdの値を関数insertChildDiv()に渡して、挿入された子divがこの親のdivにネストされるようにしました。また、a タグの id をid="more123456"使用して、href 値を値に変更し、挿入された子 div を非表示にします

ありがとう、要素の ID の名前を変更して、最初の文字を文字にします。

$() ex 内にparentIdをラップする単一のqoutesを削除すると。$(parentId).insert(ChildComment);返されるエラーは次のとおりです。

$(parentId).insert is not a function

親 ID を一重引用符で囲むと、プロトタイプは 'parentId' エラーの id を持つ div を見つけられません。$("parentId") is null

于 2009-05-26T13:58:29.140 に答える
0

わあ、本当にありがとうございます!今では動作します。この同じシナリオに出くわす可能性のある他の人のために、ここで私が考えていることは次のとおりです。ELEMENTのIDとして数字のみを使用しないでください(「id」という単語が数字であることを示唆している場合でも)。本当に必要な場合はYESその ID の数字、ID の先頭にある 1 文字でも連結します。現在使用しているIDは id="parent123456" です

于 2009-05-27T05:22:51.443 に答える
0

通常は $(parentId).insert(...) を使用します。

$(parentId + 'more').insert(...)あなたの特定のケースではうまくいきませんか?

于 2009-05-26T13:30:33.473 に答える