在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML5  HTML/ new一個實(shí)例出現(xiàn)的問題?

new一個實(shí)例出現(xiàn)的問題?

html:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>test</title>
    <link rel="stylesheet" href="./showbox.css">
</head>
<body>
    <script src="./jQuery-1.12.4.js"></script>
    <script src="./showbox.js"></script>
    <script>
        $(function(){
            var box = new ShowBox();
            box.push('hello world');
        });
    </script>
</body>
</html>

js:

(function(){

    function ShowBox(){};

    ShowBox.prototype = {
        push:function(content){
           var layer = '<div class="showbox_layer"></div>';
           if(content){
              $('html,body').html(layer);
           } 
        }
    }

    window.ShowBox = ShowBox;

}());

頁面中的jquery正常引入。
問題:運(yùn)行頁面后,F(xiàn)12調(diào)出控制臺。head部分沒有內(nèi)容,同時頁面樣式也未能生效。(已確定引入樣式)
圖片描述

回答
編輯回答
寫榮

為什么要使用$('html,body')?
$('html,body')選中的是兩個元素,也就是html元素和body元素,.html方法是把元素的內(nèi)容用.html的參數(shù)完全覆蓋。

也就是首先html元素的內(nèi)容完全被<div class="showbox_layer"></div>替換,可能是給html添加元素的時候,因?yàn)?code>div不是html的有效元素,所以會生成一個空的head標(biāo)簽,一個空的body標(biāo)簽,然后把<div class="showbox_layer"></div>放入body里;

然后是body元素的內(nèi)容完全被<div class="showbox_layer"></div>替換,因?yàn)樘鎿Q前body就只有<div class="showbox_layer"></div>,所以替換后和替換前展示的內(nèi)容是一樣的。

所以就導(dǎo)致了截圖中的效果,你沒有發(fā)現(xiàn)不僅head空了,bodyscript標(biāo)簽也沒有了嗎。

所以首先把$('html,body')修改為$('body'),然后把.html方法替換為.prepend或者.append方法:

$('body').prepend(layer);

是否用.prepend方法替換.html方法要看你的需求,如果你的需求就是完全替換,那么用.html方法就行,如果是添加的話,還是換為.prepend或者.append比較好。

2017年1月18日 18:54
編輯回答
我以為

從你下面發(fā)的那個圖,說明layer已經(jīng)插入到body中了,你的代碼中l(wèi)ayer并沒有內(nèi)容,所以網(wǎng)頁是空白的

2018年8月30日 10:34