Div met hide/vissible

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

D B

D B

19/09/2014 18:23:36
Quote Anchor link
Hallo,

Ik heb een scriptje gemaakt wat van een lap tekst een kort tekstje maakt met een lees meer knop erbij.
Dit laat ik met javascript schakelen tussen hide en vissible.

Nu zou ik graag dat de gehele tekst als je op de knop drukt op dezelfde plaats komt te staan als de korte tekst.

Voor een voorbeeld zie:
http://www.zscwesterhoven.nl/test.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<html>
<head>
<script type="text/javascript">
function beginfase()
 {
   document.getElementById('completetekst').style.visibility = 'hidden';
 }

function showall(value)
 {
   if(document.getElementById('completetekst').style.visibility == 'hidden')
   {
     document.getElementById('kortetekst').style.visibility = 'hidden';
     document.getElementById('completetekst').style.visibility = 'visible';
   }
   else
   {
   document.getElementById('completetekst').style.visibility = 'hidden';
   }
 }
</script>
</head>

<body onload="beginfase();">

<?
$aantalwoorden
= 5;
$tekst = 'Dit is een Test voor bla bla as sadf ksdflj sdifjsdf isdfjk dsisdfkjdsf idsfkjdsf idfksj fkjsdf sfkjdsf sdfksdjf sldfjl sdjfkl sdfiojsd fsjdfijsfijsdifjsjdf jlsks di sjf klsdjfs';
$woorden = explode(" ", $tekst);
$totaalwoorden = count($woorden);

if ( $totaalwoorden > $aantalwoorden ) {
    echo '<div id="kortetekst" style="position:top">';
    for ($i = 0; $i < $aantalwoorden; $i++) {
        if ( $kortetekst == '' ) {
            $kortetekst = $woorden[$i];
        }

        else {
                    $kortetekst .= ' '. $woorden[$i];
        }
    }

    $kortetekst .= '.....';
    echo $kortetekst;
    echo '<br>';
    echo '<a onclick="showall();"><p style="text-align:right;"><i style="font-size:90%;">Lees meer...</i></p></a><br>';    
    echo '</div>';
    echo '<div id="completetekst" style="position:top">';
    echo $tekst;
    echo '</div>';
}

else {
    echo $tekst;
}

?>

</body>
</html>
 
PHP hulp

PHP hulp

21/11/2024 18:07:47
 
Wouter Van Marrum

Wouter Van Marrum

19/09/2014 20:05:45
Quote Anchor link
Kijk eens hiernaar :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/*
 * jQuery Shorten plugin 1.0.0
 *
 * Copyright (c) 2013 Viral Patel
 * http://viralpatel.net
 *
 * Dual licensed under the MIT license:
 *   http://www.opensource.org/licenses/mit-license.php
 */
 
 (function($) {
    $.fn.shorten = function (settings) {
    
        var config = {
            showChars: 100,
            ellipsesText: "...",
            moreText: "more",
            lessText: "less"
        };
 
        if (settings) {
            $.extend(config, settings);
        }
        
        $(document).off("click", '.morelink');
        
        $(document).on({click: function () {
 
                var $this = $(this);
                if ($this.hasClass('less')) {
                    $this.removeClass('less');
                    $this.html(config.moreText);
                } else {
                    $this.addClass('less');
                    $this.html(config.lessText);
                }
                $this.parent().prev().toggle();
                $this.prev().toggle();
                return false;
            }
        }, '.morelink');
 
        return this.each(function () {
            var $this = $(this);
            if($this.hasClass("shortened")) return;
            
            $this.addClass("shortened");
            var content = $this.html();
            if (content.length > config.showChars) {
                var c = content.substr(0, config.showChars);
                var h = content.substr(config.showChars, content.length - config.showChars);
                var html = c + '<span class="moreellipses">' + config.ellipsesText + ' </span><span class="morecontent"><span>' + h + '</span> <a href="#" class="morelink">' + config.moreText + '</a></span>';
                $this.html(html);
                $(".morecontent span").hide();
            }
        });
        
    };
 
 })(jQuery);

    $(".shout_comment").shorten({
        "showChars" : 50,
        "moreText"  : "Lees meer",
        "lessText"  : "Lees minder",
    });
 
D B

D B

20/09/2014 09:16:10
Quote Anchor link
Dat is een oplossing, maar ik zou graag weten of en hoe het mogelijk is om mijn script aan te passen
 
Frank Nietbelangrijk

Frank Nietbelangrijk

20/09/2014 09:46:46
Quote Anchor link
Oké een paar tips:
Plaats geen <p> binnen een <a>. maar doe dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<p class="right"><a onclick="showall();">Lees meer...</a></p>


inline css: niet doen! Gebruik bij voorkeur een separaat css bestand of zet de css tussen de <style> tags in je header.

verander visability:...; naar display:none; of display:block;

Je kunt met de CSS direct de div 'completetekst' verbergen om mee te beginnen. Javascript is hier niet voor nodig

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<html>
<head>
<style>
body {
    font-family:Arial, Helvetica, sans-serif;
    font-size:90%;
    font-style:italic;
}
.right {
    text-align:right;
}
#kortetekst {
    width:400px;
}
#completetekst {
    display:none;
}
</style>
<script type="text/javascript">
function showall(value)
 {
   if(document.getElementById('completetekst').style.display == 'none')
   {
     document.getElementById('kortetekst').style.display = 'none';
     document.getElementById('completetekst').style.display = 'block';
   }
   else
   {
   document.getElementById('completetekst').style.display = 'none';
   }
 }
</script>
</head>

<body>

<div id="kortetekst" style="position:top">
    Dit is een Test voor.....<br>
    <p class="right"><a onclick="showall();">Lees meer...</a></p><br>
</div>
    <div id="completetekst">
        Dit is een Test voor bla bla as sadf ksdflj sdifjsdf isdfjk dsisdfkjdsf idsfkjdsf idfksj fkjsdf sfkjdsf sdfksdjf sldfjl sdjfkl sdfiojsd fsjdfijsfijsdifjsjdf jlsks di sjf klsdjfs
       </div>
</body>
</html>
 
D B

D B

21/09/2014 21:05:45
Quote Anchor link
Ok, ik ben nu al wat verder.

Maar als ik nu straks meerdere 'nieuwsberichten' heb krijgen deze allemaal een ander id. Nu dacht ik dit in mijn javascript te regelen met een variabel wat ik meegeef, maar javascript is me toch nog wat lastig dus als iemand me hiermee wat kan helpen/uitleggen dan zou dit heel fijn zijn.

Dit is wat ik nu heb:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<html>
<head>
<link href="css/nieuws.css" type="text/css" rel="stylesheet">
<script type="text/javascript">
function showall(value){
    var x = value; //dit zou eigenlijk moeten zijn nieuws_1l of nieuws_1m enz.. 2l,2m 3l,3m
    if([x].style.display == 'none' || [x].style.display == '') {
        [x].style.display = 'none';
        [x].style.display = 'block';
    }
    else {
        [x].style.display = 'none';
        [x].style.display = 'block';
    }
}
</script>
</head>

<body>

<?
$aantalwoorden
= 5;
$tekst = 'Dit is een Test voor bla bla as sadf ksdflj sdifjsdf isdfjk dsisdfkjdsf idsfkjdsf idfksj fkjsdf sfkjdsf sdfksdjf sldfjl sdjfkl sdfiojsd fsjdfijsfijsdifjsjdf jlsks di sjf klsdjfs';
$woorden = explode(" ", $tekst);
$totaalwoorden = count($woorden);

if ( $totaalwoorden > $aantalwoorden ) {
    echo '<div class="kortetekst" id="nieuws_1l">';
    for ($i = 0; $i < $aantalwoorden; $i++) {
        if ( $kortetekst == '' ) {
            $kortetekst = $woorden[$i];
        }

        else {
                    $kortetekst .= ' '. $woorden[$i];
        }
    }

    $kortetekst .= '.....';
    echo $kortetekst;
    echo '<br>';
    echo '<p class="nieuwsmeer"><a onclick="showall(1m);">Lees meer...</a></p><br>';    
    echo '</div>';
    echo '<div class="completetekst" id="nieuws_1m">';
    echo $tekst;
    echo '<br>';
    echo '<p class="nieuwsmeer"><a onclick="showall(1l);">Lees minder...</a></p><br>';
    echo '</div>';
}

else {
    echo $tekst;
}

?>

</body>
</html>
 
Frank Nietbelangrijk

Frank Nietbelangrijk

21/09/2014 22:49:23
Quote Anchor link
In de database krijgen alle nieuwsberichten een uniek id. Maar in de HTML/javascript is dit in principe meestal niet nodig.

En zeker niet wanneer het enkel om het groter maken van een <div> gaat of het verbergen of tevoorschijn halen van een div.

In html moet de attribuut id altijd uniek zijn maar de attribuut class niet. Dus wanneer je meerdere van die news divjes gaat maken dan werk je altijd met class.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<div class="news-div">
    ...
</div>
<div class="news-div">
    ...
</div>
<div class="news-div">
    ...
</div>
 
D B

D B

21/09/2014 22:54:20
Quote Anchor link
Ok, maar ik heb dadelijk meerdere nieuwsberichten, maar als ik op de knop lees meer duw moet alleen dat ene nieuwsbericht openvouwen waar ik op de knop lees meer duw, en dus niet alle nieuwsberichten.

Daarom dacht ik ik geef ze een id mee bijvoorbeeld id="nieuws_1" id="nieuws_2" en dan kan ik bij mijn knop meegeven welk id hij open of dicht moet vouwen....

Begrijp je? En kan ik hier dan iets mee?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

21/09/2014 22:57:10
Quote Anchor link
Ik kan hier alles mee. toch is dat niet nodig. je hebt namelijk in javascript het keyword this. Ik werk momenteel aan een voorbeeldje

stay tuned...

Toevoeging op 21/09/2014 23:20:09:

http://codepen.io/anon/pen/AJuer

Toevoeging op 21/09/2014 23:52:36:

Even een zijsprong...

Met dit werk is jQuery wel makkelijker: http://learn.jquery.com/

Toevoeging op 22/09/2014 00:18:05:

Een andere veel gebruikte methode is door inderdaad ieder div een (uniek) id te geven en dit zelfde id aan de <a> mee te geven als data-id:

http://codepen.io/anon/pen/vnbuq
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.