質問: this.parentnode; cartel.appendchild(productdiv); } しかし、全く反応しません。 しかも、alert(productdiv);はundifindと表示されます。おそらくthisに関して勘違いしているのかparentnodeの問題かと思うのですが、お手上げでした。 明らかに、勘違いしているかもしれませんが、お手柔らかに説明をお願いします。 また、良い解説サイトが有れば教えて下さい。
回答: function内で、alert(this)としてみれば[object]とか[object window]とか返ってくると思いますが... ついでに、 var key, m=''; for (key in this) m += ', ' + key; alert(m); などとしてみると、ブラウザによって返ってくる内容がかわります。 とりあえずの(簡単な)対処としては、呼び出し側で onclick="addtocart(this)" としておいて (↑このthisは要素になる) function addtocart(elm) { var cartel = document.getelementbyid("cart"); cartel.appendchild(elm.parentnode); } とすれば、その要素が移動します。 移動させずに(もとの要素を残したまま)、複製を作りたいのであれば、 function addtocart(elm) { var cartel = document.getelementbyid("cart"); cartel.appendchild(elm.parentnode.clonenode(true)); } みたいな感じ。 イベントをaddeventlistenerなどで登録すれば、イベントハンドラーを取得できるので、#2様がご提示の方法で要素を取得することが可能です。(このあたり、ieと他のブラウザで仕様が違う)