2009-09-01 8 views
0

Javascriptを使用して単語を隠すことができる文章があります。たとえば、最初と6番目の単語などを隠すなどです。 PHPの背景から来て、私の推測では、このようなものになるだろうということです。Javascriptを使用して文字列の単語を隠す

  1. あなたには文章のあるDIVがあります。
  2. DIV(テキストセンテンス)の値を取得します。
  3. 各単語を取得するには、テキストをスペース ""で分割します。
  4. 次に、各単語をSPANとIDまたはクラスで囲みます。
  5. 周囲のスパンを含むすべての単語をDIVに戻します。
  6. 次に、ユーザインタラクション(またはタイムアウトイベント)から、必要に応じて各SPAN [text] SPANを非表示にすることができます。

これを適切に処理する方法はありますか?

+0

隠されていた単語が崩壊するスペースはありますか?白い空白で開いたままになっていますか? – Patrick

+0

私はスペースを維持する必要がありますので、私の推測では、スペースはDIVに戻された各SPANで再挿入されるということです。 – Xeoncross

+0

申し訳ありませんが、私はあなたの質問を読んだ。私は、各単語が占有するスペースが縮小するのではなく、元のままにしたいと考えています。 – Xeoncross

答えて

1

私はあなたが説明したとおりに正確に行います。実際には、私は実際に行った:

<div> 
The dog jumps over the log. 
</div> 
<script type="text/javascript"> 
function boxWords(textNode) { 
    var frag = document.createDocumentFragment(), 
     // trim leading and trailing whitespace to avoid empty elements 
     words = textNode.nodeValue.replace(/(^\s+)|(\s+$)/g, '').split(' '); 

    for(var i = 0, len = words.length; i < len; ++i) { 
     frag.appendChild(document.createElement('span').appendChild(
      document.createTextNode(words[i])).parentNode); 
     frag.appendChild(document.createTextNode(' ')); 
    } 

    textNode.parentNode.replaceChild(frag, textNode); 
} 

var div = document.getElementsByTagName('div')[0]; 
boxWords(div.firstChild); 

// underline the 4th word 
div.getElementsByTagName('span')[3].style.textDecoration = 'underline'; 
</script> 
+0

素敵な、今私はちょうど要素を隠すときに空白を保持する方法を理解する必要があります。style.textDecoration = 'underline'の代わりに – Xeoncross

+0

; 使用style.visibilityは= – Patrick

+0

「隠された」まあ、それはそれを隠しますが、私は言葉が占有という空白を保持する必要があります。 – Xeoncross

0

どのような目的のステップ4-> 6が役立つのかよくわかりません。ステップ3で分離された単語がある場合は、配列を保持して、何かをする必要があるときには常に適切な単語にアクセスできます。

あなたのやり方は、あなたが何かをやりたいときに混乱させるためにまだどのスパン/ ID /クラスを見つけなければならないかです。あなたは、本質的に、私は一般的なアイデアとセンスはい...

は...のdivのinnerHTMLプロパティを取得する「」で、それを分割してからになり考えて、別の形式でyourlsefため

+0

さて、私が言ったように、最初と6番目の言葉などを隠したいのであれば、display:noneで「隠される」DOMオブジェクトでなければならないと思います。 – Xeoncross

+0

確かに、あなたが必要とするときと、あなたが必要とするものを正確に知っているときにそれらを包みます。それらをすべて掴んで、それらを包み込み、それからあなたが再び必要とするものを見つけるという問題に直面している。 – Steerpike

+0

ああ、私はあなたが今何を言ってるのか理解だと思う - あなたが考えることができるようにしたいイベントの一つである単一の単語をクリックして効果を得ることの可能性は、はい?その場合、あなたのソリューションは問題ありません。 – Steerpike

0

を同じ問題を作成しています値の各単語は、一意のIDを持つdivに入れます。スペース内の単語の相対的なサイズを非表示にするか、innerhtml = ""にすることで文章を崩壊させることができます。 divの分割を取得し、独自の個々の単語のdivに再表示用として

function divclick(id) 
{ 
    //document.getElementById(id).style.visibility="hidden"; 
     // OR 
    //document.getElementById(id).innerHTML = ""; 
} 

...それは取引の大きなになるはずの...あなただけは考慮する必要はありだと思いますどのようなイベントであります言葉が消えたり現れたりします。

+0

まあ、どのようなイベントが消えてしまうのかよく分かりません。それはマウスクリック、タイムアウト、またはonLoadです。私はちょうど彼らが隠れるべき時であるときに私が単語にアクセスする簡単な方法を持っていることを確認したい。 – Xeoncross

関連する問題