Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态插入的内容会创建奇数边距_Javascript_Html_Css - Fatal编程技术网

Javascript 动态插入的内容会创建奇数边距

Javascript 动态插入的内容会创建奇数边距,javascript,html,css,Javascript,Html,Css,我有一个页面,将值列表加载到列表框中。当页面加载时,从数据库中检索这些值,并使用PHP构建列表 页面加载后,用户可以输入一个新值,并通过jQuery将其添加到列表中。新的列表项是使用jQuery构建为DOM树的,但它在各个方面都与PHP生成的相同。我使用Chrome开发工具比较了这两种工具,它们是相同的 无论如何,这一切都很好,除了jQuery插入的跨距中有一个位置稍有不同 (添加橙色虚线是为了视觉参考;它们是轮廓值,因此不会影响任何元素的位置) 我对两者使用相同的类,甚至用Chrome检查了

我有一个页面,将值列表加载到列表框中。当页面加载时,从数据库中检索这些值,并使用PHP构建列表

页面加载后,用户可以输入一个新值,并通过jQuery将其添加到列表中。新的列表项是使用jQuery构建为DOM树的,但它在各个方面都与PHP生成的相同。我使用Chrome开发工具比较了这两种工具,它们是相同的

无论如何,这一切都很好,除了jQuery插入的跨距中有一个位置稍有不同

(添加橙色虚线是为了视觉参考;它们是
轮廓
值,因此不会影响任何元素的位置)

我对两者使用相同的类,甚至用Chrome检查了计算样式。PHP插入的列表项和jQuery插入的列表项具有完全相同的样式。然而,通过jQuery插入的Smith Bob没有排队

这可能是什么原因造成的

我没有发布任何CSS,因为有很多,我不知道这会有多大帮助。因为我看过每个单独的计算值,它们都是相同的,所以我认为这可能不是CSS问题

编辑:[删除了测试URL,因为它位于我无法控制的服务器上,并且鉴于问题已得到回答,似乎不再需要它]


红色追加 左侧列表中的按钮应将项目添加到右侧列表中,但它们看起来不会对齐,就像上图所示。

老实说,我认为问题不在于用户插入的项目,而在于页面加载时插入的项目

当我用英文版的Chrome启动页面时,“当前活动项目”列表就全搞乱了。删除每个项目,然后通过单击带有红色文本的按钮再次添加它们,可以使列表看起来正常。它还可以使鼠标悬停再次正常工作,因为每个项目都存在于一行中,而不是2-1行与相邻元素重叠

这就是我看到的。左边的图像在页面加载后立即显示,右边的图像在清除并重新填充后显示列表

为完整性添加了代码-在下面的评论中承诺。如果它能帮助别人,那就太好了

<script>
<?php
    printf("var apartmentComplexes = { mArray : %s };", json_encode($apartmentComplexes));
?>

// an exerpt of what above statement produces
var apartmentComplexes = { mArray : [{"name":"Aria","description":"Uma das<br> mais exclusivas propostas de Porto ......

function myOnLoad()
{
    var numComplexes = apartmentComplexes.mArray.length;

    // do some other stuff with the apartmentComplexes object


    setPageApartmentComplex(0);
}

</script>

//上述陈述产生的结果的一个练习
var ApartmentComplements={mArray:[{“名称”:“咏叹调”,“描述”:“Uma das
作为波尔图的独家提案……”。。。。。。 函数myOnLoad() { var numComplexes=apartmentComplexes.mArray.length; //对ApartmentComplements对象执行其他操作 setPageApartmentComplex(0); }
对于内联元素,您可能会在html代码中看到空白。 你可以测试一下。创建一个无序列表,让李的内联(给他们一个背景颜色)。你能看到空间吗?现在让他们浮动->爆炸,空间消失了

在PHP代码中,html的格式很好。跨距是内联元素,因此它们会显示(白色)空格。通过javascript插入的html没有格式,但在中间没有空格,因此没有空格显示


所以,浮动你的跨距,你的问题就解决了。

啊,好主意!对不起……我现在就上传。我看到它们与chromiumI对齐,我正在Mac OS X上的Chrome和Safari中测试(日文版),它们都显示了奇怪的对齐问题。我想在Windows机器上测试,但我在几个小时内无法访问。可能是浏览器/操作系统问题…?@david,我正在win7、firefox和chrome上测试。它们都有奇怪的空格。如果你删除开发工具中的项目符号,空格是相等的。我还没有弄清楚是什么y、 …然而。嗯…我原本以为jQuery没有放足够的空间,但现在我认为PHP插入的太多了。检查边距似乎表明jQuery排成一行,但PHP排成一行。再加上你所说的,可能是bullet标记中或周围的隐藏字符?好吧,所以我有点怀疑开始使用时似乎是正确的。感谢屏幕截图!我必须将PHP分离出来,看看那里是否有任何不想要的访客…不用担心,我不使用jQuery,所以我不能推荐代码-但是我倾向于在页面加载后使用jQuery填充表。这样,您将使用单一机制插入e项。关键区别在于,该机制将通过代码而不是用户交互事件启动。:耸耸肩:你是对的。通常我不会使用两种方法来做同样的事情。但是db值是通过PHP检索的,因此使用PHP来创建初始列表更容易。另一方面,我玩弄了对用户创建的列表项进行ajaxing,但这似乎是不必要的开销。加上现在看来这只会加剧问题,因为PHP代码是一开始的问题。啊,好吧。离我可以在英语机器上测试只有一个小时了,所以我会尝试一下,稍后再报告……好吧,这是我稍后报告的意思“我以后不会再报告了:-)谢谢你的帮助,这让我跳出框框思考,这从来都不是一件坏事。每当我想做这样的事情时,我都会用php创建数组,然后将它吐出到json字符串中,作为javascript数组回显。你已经知道哪些项目会出现在左侧列表中,你也知道哪些项目应该已经在正确的列表中。所以,我要做的是创建一个需要添加的项目的索引数组。我会将其输出为json字符串。我会更新我的答案,以包含我目前正在使用的一部分代码。无论如何,我猜现在离英文版本只有3/4个小时了。干杯。呵呵-刚刚看到你很好的第一句话。呵呵!哦,你是认真的吗?如果这是真的,我真的需要打自己一巴掌。。