javascript - jquery, chaque boucle obtient la largeur du div et l'attribue à l'élément parent. Pourquoi le résultat est-il faux ?
迷茫
迷茫 2017-05-19 10:42:40
0
7
754
<script src="jquery.js"></script>
<p id="a1">
    <p class="aa" style="width: 200px;">423423423423423423423</p>
    <p class="aa" style="width: 180px;">42342342342342342</p>
    <p class="aa" style="width: 150px;">123123</p>
</p>
<script>
var w = 0
$("#a1 .aa").each(function(){
    w += $("#a1 .aa").width();//获取宽度。并累加
})
$("#a1").width(w)
</script>
<style>
    .aa{
        display: inline-block;
    }
</style>

À l'origine, le résultat devrait être comme ça

Mais après avoir supprimé les styles en ligne, le résultat est superbe.

Pourquoi supprimer les styles en ligne ? C'est ça? ? ? ?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

répondre à tous(7)
我想大声告诉你

Raccourcir style标签对放到domjs之前
你的代码结构如果没有行内样式,会先把.aa按照块级元素处理,宽度为100%
js处理完成之后才读取style标签对,把.aa处理为行内块级元素 la largeur
Le code synchronisé doit être positionné correctement

左手右手慢动作

w += $("#a1 .aa").width();//Obtenir la largeur. Et additionnez

w += $(this).width();
淡淡烟草味

Mettez le style en haut. La page est chargée de haut en bas. p est un élément de niveau bloc .aa{display:inlne-block;} ne fonctionne pas en bas

.
伊谢尔伦
$("#a1 .aa").each(function(){
    w += $("#a1 .aa").width();
    //这里用错了,应该用$(this).width(),不然累加的是第一个的宽度,
    //用w += $(this).width();我这本地测试530px
})
小葫芦
$("#a1 .aa").width();//这样默认取的是第一个.aa的宽度,也就是200,所以最后是600
第二次你删除行内样式后,得到p占据一行的宽度(因为inline-block还没生效),所以得到三倍的整行宽度
刘奇

迷茫

Vous ne comprenez pas le vrai sens de $(selector)
Allez vérifier ce qui sera retourné et vous connaîtrez le problème

$("#a1 .aa").each(function(){
    w += $("#a1 .aa").width(); // 这一句会返回什么?
})

Une autre question
Vous devez comprendre où le style sera ajouté et sera-t-il chargé à l'avance ?
Quelle est l'exécution du script ?

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal