javascript - Mengapakah terdapat petikan tunggal dan berganda serta tanda tambah di dalam kurungan setTimeout?
phpcn_u1582
phpcn_u1582 2017-05-19 10:14:49
0
4
655
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<style type="text/css">
    .top-nav {
        font-size: 14px;
        font-weight: bold;
        list-style: none;
    }
    .top-nav li {
        float: left;
        margin-left: 1px;
    }
    .top-nav li a {
        line-height: 34px;
        text-decoration: none;
        background: #3f240e;
        color: #fff;
        display: block;
        width: 80px;
        text-align: center;
    }
    .top-nav ul {
        list-style: none;
        display: none;
        padding: 0;
        position: absolute;
        height: 0;
        overflow: hidden;
    }    
    .top-nav li a:hover {
        background: url(images/slide-bg.png) 0 0 repeat-x;
    }
    .note {
        color: #3f240e;
        display: block;
        background: url(images/slide-bg.png) 0 0 repeat-x;
    }
    .corner {
        display: block;
        height: 11px;
        background: url(images/corner.png) 31px 0 no-repeat;
    }
</style>
<script type="text/javascript">
     window.onload = function() {
         var Lis = document.getElementsByTagName("li");
         for(var i=0; i<Lis.length; i++) {
             Lis[i].onmouseover = function() {
                 var u = this.getElementsByTagName("ul")[0];
                 if(u != undefined) {
                 u.style.display = "block";
                 AddH(u.id);    
                 }
                 
             }

             Lis[i].onmouseleave = function() {
                 var u = this.getElementsByTagName("ul")[0];
                 if(u != undefined) {
                 SubH(u.id);    
                 }
                 
             }
         }
     }
    function AddH(id) {
        var ulList = document.getElementById(id);
        var h = ulList.offsetHeight;
        h += 1;
        if(h<=42) {
            ulList.style.height = h + "px";
            setTimeout("AddH('"+id+"')",10);
        }
        else {
            return;
        }
        
    }

    function SubH(id) {
        //setTimeout();
    }
</script>
<body>
    <ul class="top-nav">
    <li><a href="#"><span class="note">慕课网</span></a></li>
    <li><a href="#">课堂大厅</a></li>
    <li><a href="#">学习中心</a>
    <ul id="mnuUL">
        <span class="corner"></span>
        <li><a href="#">前端课程</a></li>
        <li><a href="#">手机开发</a></li>
        <li><a href="#">后台编程</a></li>
    </ul>
    </li>
    <li><a href="#">关于我们</a></li>
    </ul>
</body>
</html>
phpcn_u1582
phpcn_u1582

membalas semua(4)
刘奇

fungsi AddH(id) {

var ulList = document.getElementById(id);
var h = ulList.offsetHeight;
h += 1;
if(h<=42) {
    ulList.style.height = h + "px";
    setTimeout("AddH('"+id+"')",10);
}
else {
    return;
}   

}
Ini ialah fungsi yang anda tulis sendiri, dan kemudian anda menggunakan setTimeout("AddH('"+id+"')",10) untuk memanggil fungsi AddH dengan kerap. Tanda petikan berganda terluar mungkin ada atau mungkin tidak Ini mempunyai sedikit kesan Seperti yang dikatakan oleh orang di atas, setTimeout boleh menerima rentetan dan menjalankannya sebagai kod. Kemudian pasangan petikan tunggal di dalam adalah kerana document.getElementById(id) dalam fungsi anda perlu digunakan untuk mendapatkan objek label berdasarkan id Contohnya, jika id anda adalah hellow, maka nilai yang anda masukkan adalah tanpa petikan tunggal. Dalam kes ini, ia adalah hellow, dan apabila diluluskan secara dalaman, ia menjadi document.getElementById(hellow) Ini adalah salah kerana parameter yang diterima bagi fungsi document.getElementById(parameter) mestilah jenis rentetan, jadi tanda petikan. mesti ditambah. Ya, apabila anda menambah tanda petikan, nilai yang dihantar akan menjadi document.getElementById('hello'). Bagi petikan berganda yang paling dalam dan tanda tambah, ia adalah penyambung Sama seperti rentetan "neraka", jika anda ingin menambah pembolehubah var i = "ow" pada akhir, jika anda menambahnya secara langsung, "neraka" saya akan. kelihatan seperti ini Jika anda menulisnya, ralat akan dilaporkan, jadi anda perlu menggunakan simbol sambungan kami + tanda Jika anda menulis "hell" + saya suka ini, rentetan baharu yang terdiri daripada "hello" akan menjadi "hello". Dalam kod anda, kerana id pembolehubah anda ditulis di tengah, anda perlu menggunakan dua tanda tambah untuk menyambung. Malah, tanda petikan tunggal dan berganda anda boleh ditulis dengan cara lain Jika anda tahu cara menggunakan aksara melarikan diri, saya tidak akan memberikan penjelasan terperinci di sini Anda akan memahaminya secara perlahan pada masa hadapan.

習慣沉默

setTimeout boleh menerima rentetan sebagai kod untuk dijalankan.

var id = 2; 
var a = "AddH('"; 
var b = id; 
var c = "')"; 
var todo = a + b + c; 
console.log(todo); 

var alertGenerator = function(str){
    return "alert('" + str + "')"; // alertGenerator('0v0') => 'alert("0v0")'; 
}

var alertHello = alertGenerator('hello'); 

setTimeout(alertHello, 2000); 

Tetapi tidak disyorkan untuk menghantar rentetan ke setTimeout

setTimeout("AddH('"+id+"')",10); 

// => 
setTimeout(function(){
    AddH(id); 
}, 10); 
我想大声告诉你

Jika anda tidak menambahnya, fungsi itu akan dilaksanakan sendiri

曾经蜡笔没有小新


Jika parameter pertama ialah rentetan, ia bersamaan dengan eval dan boleh dilaksanakan sendiri.


Sumber

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan