JavaScript文本收缩展开 showdetail

原文发布时间为:2009-11-15 —— 来源于本人的百度文章 [由搬家工具导入]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>

<body>
<div id="divS" style="border:1px solid #f0f0f0;background-color:#ccc;padding:4px;margin:10px">
<p>测试文本</p>
<p>测试了</p>
<p>测试侧试试了</p>
<p>测试文本</p>
<p>测试了</p>
<p>测试侧试试了</p>
<p>测试</p>
<p>测试文本</p>
<p>测试了</p>
<p>测试侧试试了</p>
<p>测试文本</p>
<p>测试了</p>
<p>测试侧试试了</p>
</div>
<p>
<script type="text/javascript"><!--
doShrink(document.getElementById('divS'),60);
function doShrink(oshrink,maxHeight){  
    if(oshrink){  
        var oH = (oshrink.clientHeight||oshrink.offsetHeight);  
        if(oH>maxHeight){  
            var linka = document.createElement("a");  
            var div = document.createElement("div");     
            div.innerHTML = "……<br />"
            text = document.createTextNode("[点击查看更多内容]");
            linka.href = "javascript:void(0)";  
            linka.onclick = function(e) { shrinkShow(this); }  
            linka.appendChild(text);  
            div.appendChild(linka);
            var onext = oshrink.nextSibling;  
            if(onext)  
                oshrink.parentNode.insertBefore(div,onext);  
            else
                oshrink.parentNode.appendChild(div);  
            //过滤较长的内容  
            oshrink.srcHeight = oH;  
            oshrink.style.cssText ="overflow-y: hidden; max-height: "+maxHeight+"px; *_height: "+maxHeight+"px; ";  
        }  
    }  
}

function remove(o){
if(o && o.parentNode)o.parentNode.removeChild(o);
}

/* 第一种,具有展开效果 */
var shrinkInterval = false;  
function shrinkShow(obj) {  
    var omore = obj.parentNode;  
    var ohide = omore.previousSibling;  
    shrinkInterval = window.setInterval(function(){shrinkStep(ohide);},20);
remove(omore); //去除更多链接
}  

function shrinkStep(ohide){  
    var targetHeight = ohide.srcHeight;  
    var nowHeight = (ohide.clientHeight||ohide.offsetHeight);;  
    if(nowHeight < targetHeight){  
        ohide.style.height = nowHeight+20 + 'px';  
        ohide.style.maxHeight = nowHeight+20 + 'px';  
    }else{  
        if(shrinkInterval){  
            window.clearInterval(shrinkInterval);  
            shrinkInterval = false;  
        }  
    }  
}

/* 第二种,没有展开效果 */

/*
function shrinkShow(obj) {  
    var omore = obj.parentNode;  
    var ohide = omore.previousSibling;  
    ohide.style.height = ohide.srcHeight + 'px';  
    ohide.style.maxHeight = ohide.srcHeight + 'px';
remove(omore); //去除更多链接
}
*/

// --></script>
</p>
</body>
</html>

转载于:https://www.cnblogs.com/handboy/p/7158381.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的商品动态网站的JavaScript代码实现,包含商品列表展示、商品搜索、商品详情展示等功能: ```html <!DOCTYPE html> <html> <head> <title>商品动态网站</title> <meta charset="utf-8"> </head> <body> <h1>商品列表</h1> <input type="text" id="searchInput" placeholder="输入商品名称进行搜索"> <button onclick="search()">搜索</button> <ul id="goodsList"></ul> <div id="detail" style="display:none;"> <h2 id="name"></h2> <p id="description"></p> <p id="price"></p> </div> <script> // 商品列表数据,实际应该从服务器获取 var goodsData = [ { name: "商品1", description: "这是商品1的描述", price: 100 }, { name: "商品2", description: "这是商品2的描述", price: 200 }, { name: "商品3", description: "这是商品3的描述", price: 300 } ]; // 初始化商品列表 var goodsList = document.getElementById("goodsList"); for (var i = 0; i < goodsData.length; i++) { var li = document.createElement("li"); li.innerHTML = "<a href='javascript:showDetail(" + i + ")'>" + goodsData[i].name + "</a>"; goodsList.appendChild(li); } // 搜索商品 function search() { var keyword = document.getElementById("searchInput").value; var result = []; for (var i = 0; i < goodsData.length; i++) { if (goodsData[i].name.indexOf(keyword) != -1) { result.push(goodsData[i]); } } showGoodsList(result); } // 展示商品列表 function showGoodsList(data) { goodsList.innerHTML = ""; for (var i = 0; i < data.length; i++) { var li = document.createElement("li"); li.innerHTML = "<a href='javascript:showDetail(" + i + ")'>" + data[i].name + "</a>"; goodsList.appendChild(li); } } // 展示商品详情 function showDetail(index) { var detail = document.getElementById("detail"); detail.style.display = "block"; document.getElementById("name").innerHTML = goodsData[index].name; document.getElementById("description").innerHTML = goodsData[index].description; document.getElementById("price").innerHTML = "价格:" + goodsData[index].price + "元"; } </script> </body> </html> ``` 在这个代码中,我们首先定义了一个商品列表的数据`goodsData`,其中包含了三个商品的名称、描述和价格。然后,我们使用JavaScript动态生成了一个商品列表展示的`<ul>`元素,并将商品数据填充到列表中。同时,我们还添加了一个输入框和一个搜索按钮,用于搜索商品,当用户输入关键字并点击搜索按钮时,我们会根据关键字过滤出符合条件的商品,并重新渲染商品列表。 另外,我们还定义了一个`showDetail`函数,用于展示商品详情。当用户点击商品列表中的某一项时,我们会调用该函数,将商品详情展示在页面上。 当然,这只是一个简单的示例,实际的商品动态网站需要更加完善的功能和更复杂的交互逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值