「スタイル」メソッドを使用せずに要素を非表示にするにはJavascriptのみを使用できますか?ですから、HTML要素にインラインCSSを使用する必要はありません。それとも、jQueryはどのようにしてhide/showイベントをコアで実行しますか?DOMをつぶすことなくJavascriptのみを使用して要素を非表示/表示する
1
A
答えて
1
これは、JavascriptとJqueryの両方を使用してCSSクラスを追加/削除することで実行できます。
これはDOM要素に追加されたCSSクラスであると仮定すると:
.hide { display: none}
次にあなたが使用することができます。
Javascriptをv2の(JavascriptをV1
function toggleClass(element, className){
if (!element || !className){
return;
}
var classString = element.className, nameIndex = classString.indexOf(className);
if (nameIndex == -1) {
classString += ' ' + className;
}
else {
classString = classString.substr(0, nameIndex) + classString.substr(nameIndex+className.length);
}
element.className = classString;
}
最新のブラウザではclassList.toggle()
がサポートされています)
document.getElementById('foo').classList.toggle('hide');
jQueryの
$('#foo').toggleClass('hide');
1
エレメントを表示/非表示にするCSSクラスを切り替えることができます。あなたはどんな場合でもDOMを操作する必要があります。
.hidden {
display: none;
}
document.getElementById("foo").className += " hidden";
2
jQueryはスタイルを操作することでそれを行います。
DOMを操作するための多くの方法があります。
- スタイル属性を操作するだけで、プレーンDOM自体 から要素を削除/追加するいくつかのスタイル
- を持つクラスを追加/削除が
- など
しかし、それは何らかの形でDOMを操作することを伴います。そのため、はブラウザのレンダリング内容です。
1
のは、この使用して、純粋なJavaScriptをやってみましょう。
removeElement()
は、Node.removeChild()を使用してDOMから要素を削除し、戻す場合に備えて、要素とその位置をDOMに保存します。
insertElement()
あなたが推測しているように、元の場所に戻すのはNode.insertBefore()です。
removedElements
オブジェクトの削除された要素を追跡することができます。
CSS /インラインスタイルの変更はありません。
var removedElements = {};
function removeElement(id) {
var obj = {
element \t : document.getElementById(id),
parent \t : document.getElementById(id).parentNode,
nextSibling \t : document.getElementById(id).nextElementSibling,
};
removedElements[id] = obj;
obj.parent.removeChild(obj.element);
}
function insertElement(id) {
var obj = removedElements[id];
obj.parent.insertBefore(obj.element, obj.nextSibling);
delete removedElements[id];
}
removeElement("h1");
insertElement("h1");
<div id="container">
<h1 id="h1">Lorem Ipsum</h1>
<p id="p">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
関連する問題
- 1. Javascriptを使用して要素を非表示と表示
- 2. 表示/非表示DOM要素
- 3. JavaScriptを使用してHTML要素を表示/非表示にする方法
- 4. javascriptを使用して要素を非表示にして表示
- 5. Cordovaを使用した要素の表示と非表示
- 6. HTML、CSS、Javascript - 非表示/表示要素
- 7. IDを使用せずにDOMを非表示/非表示にする要素を取得する方法は?
- 8. JavaScriptを使用して要素を非表示
- 9. javascriptの要素を非表示/表示する
- 10. 要素の非表示と非表示JavaScript/HTML
- 11. クッキーを使用してJavaScriptを表示/非表示にする
- 12. 隠し要素を表示して非表示にする
- 13. JavaScript/HTML非表示のフォーム要素が正しく表示されない
- 14. フォーカスを使用して要素を表示および非表示にすることができますか?
- 15. 要素グループの非表示と表示
- 16. 表示と非表示要素の異なるタブをPHP
- 17. Angularjs/HTML li要素を表示して非表示にする
- 18. cssを使って要素を表示して非表示にする
- 19. javascriptを使用してブートストラップのツールチップを表示/非表示
- 20. JavaScriptを使用してリピータアイテムテンプレート内のパネルを非表示/表示
- 21. JavaScriptを使用せずにチェックボックスをクリックするとフォーム要素を表示/非表示にする
- 22. Javascriptを使用してHTML要素を表示/非表示すると、新しい行に表示されるのはなぜですか?
- 23. javascriptを使用してdivを非表示/非表示にする方法は?
- 24. jqueryの「表示/非表示」JavaScriptでdiv要素ではない、としない表示と:なし
- 25. トグルJavaScriptを使用してブートストラップトグル要素(とアニメーションを表示)
- 26. 次の要素のクラスに応じて要素を表示/非表示する
- 27. 1つのdivを表示し、他の要素を非表示のラジオボタンで非表示にします
- 28. 要素を表示して要素を表示する
- 29. Chromeでのみ非表示({width: 'hide'})で非表示になると要素がちらつきます
- 30. reactJSの要素を表示/非表示にしない
jQueryのは、 'style'属性を変更します。要素の外観を変更する唯一の方法は、CSSの変更(直接またはクラスの追加による)です。 DOMに追加/削除することで要素を表示/非表示にすることができますが、その後、どこから引っ張ったのか、戻す方法を追跡する必要があります。 –