黑马程序员技术交流社区

标题: 请帮忙找找这段代码的错误 [打印本页]

作者: 王睿    时间: 2012-2-18 13:18
标题: 请帮忙找找这段代码的错误
本帖最后由 王睿 于 2012-2-19 09:05 编辑

这是看毕老师课程写的代码,只能实现部分效果,不能连续改变文字效果,我找了半天找不出问题。请大家帮忙。
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>无标题文档</title>
  6. <style type="text/css">
  7. #cssid{
  8.         height:100px;
  9.         width:300px;
  10.         background-color:#09F;
  11.         text-align:center;
  12.         line-height:100px;
  13. }
  14. #textid{
  15.         background-color:#FF0;
  16.         width:300px;
  17. }

  18. </style>
  19. <script type="text/javascript">
  20. function change()
  21. {
  22.         var selNode = document.getElementById("selid");
  23.         var value = selNode.options[selNode.selectedIndex].value;
  24.         //alert(value);
  25.         var divNode1 = document.getElementById("cssid");
  26.         var divNode2 = document.getElementById("textid");
  27.         
  28.         divNode1.style.textTransform = value;
  29.         divNode2.innerText = "text-transform:"+value+";";
  30. }
  31. </script>
  32. </head>

  33. <body>
  34. <div id="cssid">
  35.         Good good study,Day day up!
  36. </div>
  37. <p></p>
  38. <select id="selid" onchange="change()">
  39.         <option value="none">选择文字效果</option>
  40.         <option value="capitalize">首字母大写</option>
  41.         <option value="uppercase">所有字母大写</option>
  42.         <option value="lowercase">所有字母小写</option>
  43. </select>
  44. <p></p>
  45. <div id="textid">
  46.         text-transform:none;
  47. </div>
  48. </body>
  49. </html>
复制代码

作者: 王睿    时间: 2012-2-18 14:17
本帖最后由 王睿 于 2012-2-19 09:04 编辑
专门用ie8 测试过,确实存在这问题。IE6、FireFox不会,连TT(腾讯浏览器)以IE为内核的,在win7+ie8 下,也正常。可能是ie8 的 bug吧,但网上找不到资料。
  另加一function,先将 divNode1.style.textTransform ="none"; 再执行change(),也无效,但在中途加一alert(),就生效了。显然不能每次都弹个窗口吧,后来在设css属性前加上:divNode1.innerText +=""; 另加的function不用,居然生效了!

非常感谢8楼黄秋,问题解决了:加上divNode1.innerText +=""; {:soso_e142:}
作者: 王睿    时间: 2012-2-18 15:08
找了N次了,就是找不到问题,大家帮帮忙呗,把代码复制保存成html,看看你们的电脑能实现连续的改变吗?  难道是我浏览器问题!!!!!!!!!!!!!!!!!!
作者: 彭小芳    时间: 2012-2-18 15:09
王睿 发表于 2012-2-18 14:17
顶起来,求答案!

不懂意思,什么叫连续改变文字效果?麻烦解释解释
作者: 王睿    时间: 2012-2-18 15:16
pengfangjava 发表于 2012-2-18 15:09
不懂意思,什么叫连续改变文字效果?麻烦解释解释

就是选择全部大写有效果,在接着选择全部小写,就没有反应了。但是divNode2是可以获取到值的。

必须选择一次“选择文字效果”后,在选择其他的才有效果。

不知道我说明白没!
作者: 彭小芳    时间: 2012-2-18 15:27
是浏览器兼容性的问题, 我在Chrome下表现正常
作者: 王睿    时间: 2012-2-18 16:45
我是ie8,那这个代码应该怎么解决兼容问题呢
作者: 黄秋    时间: 2012-2-18 20:13
王睿 发表于 2012-2-18 16:45
我是ie8,那这个代码应该怎么解决兼容问题呢

  专门用ie8 测试过,确实存在这问题。IE6、FireFox不会,连TT(腾讯浏览器)以IE为内核的,在win7+ie8 下,也正常。可能是ie8 的 bug吧,但网上找不到资料。
  另加一function,先将 divNode1.style.textTransform ="none"; 再执行change(),也无效,但在中途加一alert(),就生效了。显然不能每次都弹个窗口吧,后来在设css属性前加上:divNode1.innerText +=""; 另加的function不用,居然生效了!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2