2017-11-20 16 views
1

ボタンをクリックすると、クローンしてdivに追加するhtmlテンプレートがあります。テンプレートの中に入れ子になっているdivのクラス名を変更したいのですが、どのようにしたらいいのか分かりません。私はそれを見てみましたが、私はJavaScriptでそれを行うための方法を見つけることができませんでしたが、私が見つけた唯一の記事はVisual Studio Codeなどでしたが、言及したように、私はJavaScriptでこれをしたいです。このようなテンプレート内の要素のクラスを変更

テンプレートを見て何か:私はクラスを変更したい、今すぐ

function addElement() { 

    var listElement = document.getElementById('newElement'); 
    var cloneTemplate = listElement.content.cloneNode(true); 
    var list = document.getElementById("list"); 
    list.appendChild(cloneTemplate); 
    cloneTemplate.removeAttribute("id"); 

} 

<template id="newElement"> 
    <div class="wrapper"> 
     <p>Test Paragraph</p> 
    </div> 
</template> 

これは私がクローンやテンプレートを追加する方法です新しく生成された要素。私が使用してこれを試してみました:

cloneTemplate.content.className = "newName"; 
cloneTemplate.className = "newName"; 

私はまた、テンプレート内のdiv要素にアクセスし、そのクラスを変更してみました、しかし、私は、私がアクセスしようとする要素が未定義であるというエラーメッセージが出続けます。 これをどのように修正できるか誰にでも分かりますか? div.wrappervar div = cloneTemplate.querySelector('div.wrapper');で選択し、ご希望の出力になりますdiv.className = 'newName';にそのクラスを変更DocumentFragment [ #text, div.wrapper, #text ]

:あなたはvar cloneTemplateの内容をログに記録した場合

+0

範囲について知る必要があります。 – jmargolisvt

+0

https://stackoverflow.com/questions/195951/change-an-elements-class-with-javascript –

+0

どういう意味ですか?私はaddElement()関数の内部でクラス名を変更しようとしているので、問題にならないようにすべきか、ここでは遅いのですか? –

答えて

1

あなたはこのような何かを受け取ることになります。あなたの関数にまとめ

それはエラーをスローして、クローン化されたコンテンツは、任意のIDを含んでいないので、 cloneTemplate.removeAttribute("id");を削除
function addElement() { 
    var listElement = document.getElementById('newElement'); 
    var cloneTemplate = listElement.content.cloneNode(true); 

    var div = cloneTemplate.querySelector('div.wrapper'); 
    div.className = 'newName'; 

    var list = document.getElementById("list"); 
    list.appendChild(cloneTemplate); 
} 

+0

あなたの返事をありがとうございます。私はクラス名を変更しようとすると別のものを調べたときに、querySelectorを使ったところでquerySelectorAllを使ってみましたが、うまくいきませんでした。それがなぜであるか知っていますか(私の最初の質問からあまりにも遠く離れていないことを望みます) –

+1

querySelectorAllはNodeListを返します(https://developer.mozilla.org/en-US/docs/Web/API/Document/ querySelectorAll)、querySelectorは最初の要素を返します(https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector) – DKSan

関連する問題