关于一个前端HTML的问题.通过javascript的onclick事件来改变<span>的display值.但是遇到一个问题~

<li><spanclass="short">简短文字<ahref="#">点击此处</a></span><spanclass="all"style="display:n... <li>
<span class="short">简短文字<a href="#">点击此处</a></span>
<span class="all" style="display:none;">完整的文字</span>
</li>
<li>
<span class="short">简短文字<a href="#">点击此处</a></span>
<span class="all" style="display:none;">完整的文字</span>
</li>
<li>
<span class="short">简短文字<a href="#">点击此处</a></span>
<span class="all" style="display:none;">完整的文字</span>
</li>

我现在有多个这样的li,然后我想点击那个"简短文字"后面的a标签以后,简短文字的<span>的display改为none,完整文字的<span>的display改为inline.

同时还有个要求就是,点的哪个li,就改变哪个li,比如我点的第二个li的a标签,那么就只改变第二个li里面的两个<span>的属性,而第一个和第三个的<span>不变~
展开
 我来答
z1h2p31983
2012-09-26 · TA获得超过251个赞
知道小有建树答主
回答量:147
采纳率:0%
帮助的人:157万
展开全部
不用这么麻烦,我这种最适合小弟
<script type ="text/javascript">
function hide(obj){
obj.parentNode.nextSibling.style.display="inline";//取父节点的兄弟节点就OK了
}
</script>
//html代码
<li><span class="short">简短文字<a href="#" onclick ="hide(this)">点击此处</a></span><span class="all" style="display: none;">
完整的文字</span> </li>
<li><span class="short">简短文字<a href="#" onclick ="hide(this)">点击此处</a></span><span class="all" style="display: none;">
完整的文字</span> </li>
<li><span class="short">简短文字<a href="#" onclick ="hide(this)">点击此处</a></span><span class="all" style="display: none;">
完整的文字</span> </li>

不瞒您说,这个有个小小缺点,<span></span>这标记之间不能有空格和换行,其它一切运行正常,原因很简单,有空格和换行就取不到span标记了,这不影响你正常使用和界面的布局哦
本程序已通过上机测试,祝你好运!
追问
不能有空格是指的程序中还是输出中?
追答
程序代码中,在页面解析的时候不影响任何美观,IE会自动过滤掉换行和空格,嘿嘿
捣鼓出来了没
还有其它疑问没?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tconzi
2012-09-26 · 超过43用户采纳过TA的回答
知道小有建树答主
回答量:94
采纳率:0%
帮助的人:109万
展开全部
var shorts = document.getElementsByClassName('short');

for(var i =0,l=shorts.length;i<l;i++){
shorts[i].getElementsByTagName('a')[0].onclick=function(){
var p = this.parentNode().parentNode();//找到父li节点
p.getElementsByClassName('short')[0].style.display="none"
p.getElementsByClassName('all')[0].style.display=""
}

}

当然,如果你使用jquery的话,可以更简单
$('.short a').live("click",function(){
$(this).parent().hide().siblings('.all').show()
})
更多追问追答
追问
是点击此处

然后

function demo(){
[你给的程序片段]

}

这样吗?
追答
不用onclick = ... ,直接在dom下面写...就可以了

你如果在属性里写onclick=“demo(this)”的话,也可以在页面中写:

function demo(ele){
var p = ele.parentNode().parentNode();//找到父li节点
p.getElementsByClassName('short')[0].style.display="none"
p.getElementsByClassName('all')[0].style.display=""
}

这样
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阿刚炖蛋
2012-09-26 · TA获得超过3004个赞
知道大有可为答主
回答量:1789
采纳率:92%
帮助的人:997万
展开全部
修改<a href="javascript:void(0)" onclick="demo(this)">点击此处</a>

这样试试··
追问
可以了,现在不跳转了.但是我点了以后没能改变display的值
...

demo(ele){
var p = ele.parentNode().parentNode();//找到父li节点
p.getElementsByClassName('short')[0].style.display="none";
p.getElementsByClassName('all')[0].style.display="";
}
追答


function demo(ele){
....
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式