开发者

How can i rearrange words in a div

I have got a div with words seprated by a comma. How can i开发者_如何学C arrange them so there is four words per line?

edit: the words are dynamically generated


Use the <pre>...</pre> tag. The text will appear on the screen exactly the way you have formatted it.


Using jQuery to simplify access to the DOM:

var content = $('#mydiv').text();              // get current content from the page
var words = content.split(',');                // break into words
for (var i = 3; i < words.length; i += 4) {    // every fourth word (but not the first)
    words[i] += '<br>';                        // append <br>
}
content = words.join(' ');                     // and rejoin with spaces
$('#mydiv').html(content);                     // and put it back in the page

NB: I've used .html() to write the contents back out otherwise the <br> tags won't be rendered properly.


Use the BR tag after every four words. See http://www.w3.org/wiki/Html/Elements/br


If str contains the words, then:

var lines = str.match(/([^,]+,*){1,4}/g);
var output = lines === null ? '' : lines.join('<br>');

Example

If:

str = "a,b,c,d,e,f,g,h,i";

Then output will be:

"a,b,c,d,<br>e,f,g,h,<br>i"

Demo here.


Using jQuery, everthing is easier. jQuery is a bunch of tools written in JavaScript and it is all saved to a variable called $. You can call jQuery which will call the base JavaScript for you and make life easier.

Add this to the <head> of your web page

<script type="text/javascript" src="http://code.jquery.com/jquery-1.5.1.min.js"></script>

Add id="arrange" to your div. If you don't like the word arrange, you can use any word you like. Make sure there are no spaces and only letters, numbers, underscores.

<div class="arrange">One two three four one two three four</div>

Add this anywhere after the div that has the text

<script type="text/javascript">
$('div.arrange').each(function () { // For each div with the class="arrange"
    var words = this.innerHTML.split(/,/) // Get an array of all the words (separated by comma)
    var newHTML = '' // We will add the new contents of the div here.
    for(var i = 0; i < words.length; i++) { // For every word
        if(i != 0) {// If this is not the first word
            if(i % 4 == 0) { // If this is the fourth word
                newHTML += '<br/>' // Add a <br/>
            } else {
                newHTML += ',' // Add a comma
            }
        }
        newHTML += words[i] // Add the word
    }
    this.innerHTML = newHTML
})
</script>

In this case, I am using jQuery to loop through each div with class="arrange"

You can see a live example here: http://jsfiddle.net/gf5wD/

This example automatically includes jQuery and automatically adds the JavaScript to the end.

You will probably eventually want to save the jquery file to servers you control. The script tag in your head will call the jquery servers which means if their site goes down, yours gets messed up.


Greetings user521180 I got you and i think this code will help

 function arrangeDiv() {
        var div = document.getElementById('div');
        var divinnerHTMLAry = div.textContent.split(' ');
        div.innerHTML = "";
        var divNewinnerHTML = '';
        var count = 0;
        for (var i = 0; i < divinnerHTMLAry.length; i++) {
            if (divinnerHTMLAry[i] != "" && divinnerHTMLAry[i] != "\n") {
                divNewinnerHTML += divinnerHTMLAry[i] + " ";
                count += 1;
                if (count == 4) {
                    divNewinnerHTML += "<br />";
                }
            }
        }
        div.innerHTML = divNewinnerHTML;
    }

Regards :)


edit : this is a PHP solution

Maybe something like that should be able to make what you want.

$string = 'a, b, c, d, e, f';
$array = explode(',', $string,);

foreach($array as $key => $word) {
  print trim($word);
  if ($key % 4 == 0) {
    print '<br />';
  }
}

If you get your word in an other way, just arrange the code so you can skip the explode() function.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜