首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >仅用HTML和JavaScript显示更多/更少的文本

仅用HTML和JavaScript显示更多/更少的文本
EN

Stack Overflow用户
提问于 2013-12-23 00:58:33
回答 10查看 161.5K关注 0票数 12

我需要创建一个显示更多/更少的文本函数,但只需要使用JavaScript和HTML.我不能使用任何额外的库,例如jQuery,它不能用CSS完成。我添加的示例代码显示的是“更多”文本,而不是“更少”。

如果有人能为我指明正确的方向,我将不胜感激。

我花了一天的大部分时间来思考这个问题,因为这显然不是现代的方法,然而,我的HTML是:

代码语言:javascript
代码运行次数:0
运行
复制
<html>
<head>
<script type="text/javascript" src="moreless.js"></script>
</head>

<body>
Lorem ipsum dolor sit amet
<p>

<p id="textarea"><!-- This is where I want to additional text--></div>
</p>

<a onclick="showtext('text')" href="javascript:void(0);">See More</a>
<p>
Here is some more text 
</body>
</html>

我的JavaScript是(moreless.js):

代码语言:javascript
代码运行次数:0
运行
复制
function showtext()
{
var text="Here is some text that I want added to the HTML file";
document.getElementById("textarea").innerHTML=text;
}
EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2013-12-23 01:39:51

我的答案是相似的,但不同的是,有几种方法可以实现切换效果。我想这取决于你的情况。这可能不是你最终的最佳选择。

您一直在寻找的缺失部分是创建一个if语句。这允许您切换您的文本。

这里有更多关于if语句的信息。

JSFiddle: http://jsfiddle.net/8u2jF/

Javascript:

代码语言:javascript
代码运行次数:0
运行
复制
var status = "less";

function toggleText()
{
    var text="Here is some text that I want added to the HTML file";

    if (status == "less") {
        document.getElementById("textArea").innerHTML=text;
        document.getElementById("toggleButton").innerText = "See Less";
        status = "more";
    } else if (status == "more") {
        document.getElementById("textArea").innerHTML = "";
        document.getElementById("toggleButton").innerText = "See More";
        status = "less"
    }
}
票数 11
EN

Stack Overflow用户

发布于 2013-12-23 01:31:45

通过一些HTML更改,您绝对可以通过CSS实现这一点:

代码语言:javascript
代码运行次数:0
运行
复制
Lorem ipsum dolor sit amet
<p id="textarea">
    <!-- This is where I want to additional text-->
    All that delicious text is in here!
</p>
<!-- the show/hide controls inside of the following
     list, for ease of selecting with CSS -->
<ul class="controls">
    <li class="show"><a href="#textarea">Show</a></li>
    <li class="hide"><a href="#">Hide</a></li>
</ul>

<p>Here is some more text</p>

与CSS一起:

代码语言:javascript
代码运行次数:0
运行
复制
#textarea {
    display: none; /* hidden by default */
}

#textarea:target {
    display: block; /* shown when a link targeting this id is clicked */
}

#textarea + ul.controls {
    list-style-type: none; /* aesthetics only, adjust to taste, irrelevant to demo */
}

/* hiding the hide link when the #textarea is not targeted,
   hiding the show link when it is selected: */
#textarea + ul.controls .hide,
#textarea:target + ul.controls .show {
    display: none;
}

/* Showing the hide link when the #textarea is targeted,
   showing the show link when it's not: */
#textarea:target + ul.controls .hide,
#textarea + ul.controls .show {
    display: inline-block;
}

JS Fiddle演示

或者,您可以使用labelinput of type="checkbox"

代码语言:javascript
代码运行次数:0
运行
复制
Lorem ipsum dolor sit amet
<input id="textAreaToggle" type="checkbox" />
<p id="textarea">
    <!-- This is where I want to additional text-->
    All that delicious text is in here!
</p>
<label for="textAreaToggle">textarea</label>

<p>Here is some more text</p>

使用CSS:

代码语言:javascript
代码运行次数:0
运行
复制
#textarea {
    /* hide by default: */
    display: none;
}

/* when the checkbox is checked, show the neighbouring #textarea element: */
#textAreaToggle:checked + #textarea {
    display: block;
}

/* position the checkbox off-screen: */
input[type="checkbox"] {
    position: absolute;
    left: -1000px;
}

/* Aesthetics only, adjust to taste: */
label {
    display: block;
}

/* when the checkbox is unchecked (its default state) show the text
   'Show ' in the label element: */
#textAreaToggle + #textarea + label::before {
    content: 'Show ';
}

/* when the checkbox is checked 'Hide ' in the label element; the
   general-sibling combinator '~' is required for a bug in Chrome: */
#textAreaToggle:checked ~ #textarea + label::before {
    content: 'Hide ';
}

JS Fiddle演示

票数 6
EN

Stack Overflow用户

发布于 2013-12-23 01:14:45

试着按一下高度。

代码语言:javascript
代码运行次数:0
运行
复制
function toggleTextArea()
{
  var limitedHeight = '40px';
  var targetEle = document.getElementById("textarea");
  targetEle.style.height = (targetEle.style.height === '') ? limitedHeight : '';
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20735726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档