为了账号安全,请及时绑定邮箱和手机立即绑定

当Js与jQuery同时对一个元素进行修改的时候,是哪个起效呢

当Js与jQuery同时对一个元素进行修改的时候,是哪个起效呢

仲鸣 2016-05-18 20:56:46
为什么我这个“#imooc1”的p标签还是js的效果,JQuery的效果没出来<script type="text/javascript">       window.onload = function(){            // 通过原生JS语法获取id为imooc1的元素p            var p = document.getElementById('imooc1');            // 将元素p在html中内容改变            p.innerHTML = 'P1:您好!通过慕课网学习jQuery才是最佳的途径';            // 将元素p的内容颜色改为红色            p.style.color = 'red';            }    </script>        <!-- 使用jQuery语法 -->    <script type="text/javascript">        $(document).ready(function() {            /**             * 通过jQuery语法获取id为imooc2的元素获得一个jQuery对象             * 调用该对象的html()方法进行更改内容             * 调用该对象的css()方法进行更改颜色样式             */                          $('#imooc1').html('p1:你好,世界').css('color','blue');            var $p = $('#imooc2');            $p.html('P2:您好!通过慕课网学习jQuery才是最佳的途径').css('color','red');        });    </script>    </head><body>    <p id="imooc1"></p>    <p id="imooc2"></p></body>
查看完整描述

1 回答

已采纳
?
闹小志

TA贡献75条经验 获得超42个赞

你这个问题想错了侧重点,你要记得,代码都是从上往下执行的

那为什么会出现jquery代码先执行的情况呢?就要从别的方面考虑。

首先我们来对程序做一些小改动,给两个函数中添加分别添加个打印:

<script type="text/javascript">
   window.onload = function(){
    console.log("js");
    }
</script>
<!-- 使用jQuery语法 -->
<script type="text/javascript">
    $(document).ready(function() {
      console.log("jquery");
    });
</script>

运行之后,控制台的输出是这样的:

//img1.sycdn.imooc.com//573d3a400001abc902280115.jpg

我们再来做一些改变:

<script type="text/javascript">
   $(document).ready(function() {
      console.log("js");
    });
</script>
<!-- 使用jQuery语法 -->
<script type="text/javascript">
    $(document).ready(function() {
      console.log("jquery");
    });
</script>

运行结果为:

//img1.sycdn.imooc.com//573d3abf0001c92f01980120.jpg

以上结果说明,问题出现在window.onload和$(document).ready上,区别:

window.onload  在DOM树和所有文件加载完成之后触发

$(document).ready  在DOM树加载完成之后触发

两个比较一下,也就是$(document).ready一定是在window.onload之前执行的!over!

查看完整回答
2 反对 回复 2016-05-19
  • 仲鸣
    仲鸣
    谢谢了,说的好清楚
  • 仲鸣
    仲鸣
    可不可以再帮忙回答一个简单的问题,element.style.transfrom="rotateX("+a+"deg)";中"+a+"为什么不能换成单引号呢,不是说单引号双引号都可以的吗
  • 闹小志
    闹小志
    你这个是三个部分的相加,咱们假设完整的是这样:element.style.transfrom="rotateX(30deg)";你可以看懂,当我们把30换成一个a变量的时候,就需要我们拼字符串,这时候就分成了三部分: (1)rotateX( 字符串表示为"rotateX(" (2)变量a 字符串表示为a (3)deg) 字符串表示为"deg)" 字符串拼接就可以表示成:"rotateX(" + a + "deg)".两个加号是三个部分。 也就是说,如果你想用单引号的话就可以写成这样:'rotateX(' + a + 'deg)' 主要的问题就是分清哪个引号是一对,变量是不需要引号的哟~
点击展开后面3
  • 1 回答
  • 0 关注
  • 1600 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信