問題タブ [textnode]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - JavaScript:スクリプトを無視して、要素のすべての子孫からテキストを取得するにはどうすればよいですか?
私の現在のプロジェクトでは、提供されたセレクターに基づいて、要素とそのすべての子孫からテキストコンテンツを収集します。
たとえば、セレクター#content
を指定してこのHTMLに対して実行すると、次のようになります。
私のスクリプトは(少し空白をクリーンアップした後)返されます:
これはいくつかのテキストです。var test = true; これはもう少しテキストです。
<script>
ただし、要素内にあるテキストノードは無視する必要があります。
これは私の現在のコードの抜粋です(技術的には、1つ以上の提供されたセレクターに基づいて一致します):
提供されたセレクターに一致する要素(およびその子孫)内のすべてのテキストノードを返すだけであるという点で、少し単純すぎます。<script>
私が探している解決策は、要素内にあるものを除いて、すべてのテキストノードを返します。特に高性能である必要はありませんが、最終的にはクロスブラウザ互換である必要があります。
セレクターに一致する要素のすべての子を何らかの方法でループし、要素内のもの以外のすべてのテキストノードを蓄積する必要があると想定しています<script>
。すべてのテキストノードから蓄積された文字列にJavaScriptがすでに組み込まれていると、JavaScriptを識別する方法はないようです。
(パフォーマンス/帯域幅の理由で)jQueryを使用できませんが、Sizzleセレクターエンジンを使用していることに気付いたかもしれません。そのため、jQueryのセレクターロジックを使用できます。
助けてくれてありがとう!
javascript - textNodesと同等のgetElementsByTagName()
ドキュメント内のすべてのtextNode
オブジェクトのコレクションを取得する方法はありますか?
getElementsByTagName()
Elementsには最適ですが、textNode
sはElementsではありません。
更新:これはDOMを歩くことで達成できることを理解しています-以下の多くが示唆しているように。ドキュメント内のすべてのノードを調べるDOM-walker関数を作成する方法を知っています。私はそれを行うためのブラウザネイティブの方法があることを望んでいました。結局のところ<input>
、1回の組み込み呼び出しですべてを取得できるのは少し奇妙ですが、すべてを取得できるわけではありませんtextNode
。
xslt - 電話番号の変換。角かっこで区切ったプレフィックス
要素があります:<phone>(987) 123-45-67</phone>
。
次のように変換する必要があります<span><small>(987)</small> 123-45-67</span>
。
どうやって作ることができますか?
javascript - childNodesのないjavascriptinnerHTML?
ajaxを使用して木々の木材が表示されないFirefoxの問題が発生している場合、phpスクリプトからhtmlソースを取得します
このhtmlコードにはタグが含まれており、tbody内にさらにいくつかのtr/tdが含まれています
ここで、このtbodyプレーンコードを既存のテーブルに追加します。ただし、もう1つの条件があります。テーブルはフォームの一部であるため、チェックボックスとドロップダウンが含まれています。table.innerHTML +=contentを使用する場合; Firefoxはテーブルをリロードし、その中のすべての要素をリセットします。
私が持っているのはこれです
これは非常に些細なことで問題が見当たらないか、そのコーナーケースであり、ここの誰かがこれについてアドバイスを与えるために多くの経験を持っていることを願っています-誰もが私が期待する最終的に解析されたdom要素ではなくテキストノードを取得する理由を想像できますか?
ところで:ところで、完全な例を示すことはできません。テストセットではなく、実際に発生するバグの1つである、動作しない小さなコードを記述できません。
thx all
javascript - JS DOM:テキストコンテンツで要素を取得
JSを使用してDOMツリーで全文検索を実行する方法を探しています。つまり、特定の文字列を含むテキストノードのリストを取得したいと思います。
mootoolsを試しましElement.getElements ( ':contains[string]' )
たが、空白を含む文字列で動作させることができません。
編集:jQueryとmootoolsは、:contains
オペレーターがツリートラバーサルを実行するように見えます。これは、ページを検索するためのネイティブな方法がないことを意味しますが、これは正しいですか?ページが巨大で、要素に関する唯一の情報が検索対象の文字列である場合、非常に非効率的なようです。私が間違っている?
すべてのテキストノードにインデックスを付け、検索対象の各文字列のインデックスをチェックすることを考えていますが、私のプロジェクトでは、そのようなインデックスを最新の状態に維持するためにDOMがいつ更新されるかを知る方法がありません。
より良いアイデアはありますか?
ありがとう
jquery - JQUERY テキスト ノード - Element 内の最後の文を検索し、span タグでラップします
ピリオドを意味する文を含むテキストのブロックで DIV を指定します。
JQUERY テキスト ノードを使用して最後の文を見つけ、最後の文だけを SPAN タグでラップするにはどうすればよいでしょうか。
ありがとう
javascript - JavaScript: textNode に要素を追加する
textNode に要素を追加したい。例: 要素の textNode 内で文字列を検索する関数があります。見つけたら、HTML要素に置き換えたいです。そのための基準はありますか?ありがとうございました。
jquery - phpQuery で特定のテキスト ノードを選択する
OK、これは私を夢中にさせています。phpQuery を使用して、次の一見些細な HTML をスクリーン スクレイピングしようとしています。
日付はnobrタグでラップされているので簡単です。$element[':first-child']->text()
トリックを行います。 しかし、テキストの 2 番目のビットで汚れたミットを取得するにはどうすればよいでしょうか?
CSS は要素に対してのみ機能するため、テキストではなくnth-child(2),(3)
周囲の<br>
タグを返します。
XPath を実行できれば、2 番目のノードは.//text()
ゴールドになります。しかし、どうやら phpQuery ランドでは、コンテキスト$element->xpath->query('.//text()')
はドキュメント ルートであるため、ドキュメント全体のすべてのテキストを取得します!
アイデア?jQueryでテキストノードを選択するにはどうすればよいですか?のすべてのソリューション Javascript DOM 操作が含まれているように見えますが、これは PHP のひどい DOM API よりもかなり害が少ないものです。たぶん、要素全体を文字列にダンプし、それを爆発させるだけ<br>
です...
css - body 要素の直接の子であるテキストノードのスタイルを設定するにはどうすればよいですか?
textnodes を直接の子として含む body elemnt がありますが、patragraphs もあります。ここで、このテキストノードが特定の css 設定を取得できるように css を作成したいと思います。一方、階層のより深いところにあるテキストノード (つまり、段落の 1 つの子) のスタイルを設定したくありません。
直接の子ではないテキストノードをスタイリングせずに、ボディ要素の直接の子であるこのテキストノードをスタイルするにはどうすればよいですか?
javascript - javascriptによるDOM解析でFirefoxに「テキストノード」を強制的にスキップさせる
こんにちは
、HTML dom をトラバースして要素を強調表示する JavaScript コードを書いています。
私の問題は、Firefox がテキスト ノードとして空白を返すことです。
タグを返すように強制する解決策はありますか? たとえば、「firstChild」は常にテキストではなく最初のタグを返す必要があります。
ありがとう