PHP - 将文本附加到具有特定ID的html元素中

时间:2016-03-09 08:45:36

标签: javascript php html

我有一个标识为output的pre元素,并尝试向其添加多个元素

<pre id="output"></pre>

现在在我的PHP代码中运行一个for循环,只输出计数器变量(就本例而言)。

<?php
for ($i = 0; $i < 100; $i = $i + 1)
{
  echo $i;
}

使用PHP将这些值附加到标识为output的pre元素的最佳方法是什么?

编辑:我搜索一个解决方案,如果for循环不在pre标签内,该解决方案有效。它应该在我调用for循环的代码中不起作用,例如在<pre>标记下方或<pre>标记之上,两者都应该有效。

这只能用PHP吗?

4 个答案:

答案 0 :(得分:3)

由于php是在页面加载时呈现的,所以你不需要追加它 - 只需将它放在div中并直接将其回显到输出中

        <div id="divPlot" style="border: 1px solid black">
        <x3d style="width: 700px; height: 700px; border: medium none;" width="700px" height="700px">
            <scene render="true" bboxcenter="0,0,0" bboxsize="-1,-1,-1" pickmode="idBuf" dopickpass="true">
                <orthoviewpoint centerofrotation="5,5,5" fieldofview="-5,-5,15,15" orientation="-0.5,1,0.2,0.8796459430051422" position="8,4,15" znear="0.1" zfar="10000"></orthoviewpoint>
                <transform class="XAxis" rotation="0,0,0,0" render="true" bboxcenter="0,0,0" bboxsize="-1,-1,-1" center="0,0,0" translation="0,0,0" scale="1,1,1" scaleorientation="0,0,0,0">
                    <shape render="true" bboxcenter="0,0,0" bboxsize="-1,-1,-1" ispickable="true">
                        <appearance sorttype="auto" alphaclipthreshold="0.1">
                            <material emissivecolor="lightgray" ambientintensity="0.2" diffusecolor="0.8,0.8,0.8" shininess="0.2" specularcolor="0,0,0"></material>
                        </appearance>
                        <polyline2d class="X_PL2D" linesegments="0 0,2 0" solid="true" ccw="true" usegeocache="true" lit="true"></polyline2d>
                    </shape>
                </transform>
                <transform class="YAxis" rotation="0,1,0,-1.5707963267948966" render="true" bboxcenter="0,0,0" bboxsize="-1,-1,-1" center="0,0,0" translation="0,0,0" scale="1,1,1" scaleorientation="0,0,0,0">
                    <shape render="true" bboxcenter="0,0,0" bboxsize="-1,-1,-1" ispickable="true">
                        <appearance sorttype="auto" alphaclipthreshold="0.1">
                            <material emissivecolor="lightgray" ambientintensity="0.2" diffusecolor="0.8,0.8,0.8" shininess="0.2" specularcolor="0,0,0"></material>
                        </appearance>
                        <polyline2d class="Y_PL2D" linesegments="0 0,9 0" solid="true" ccw="true" usegeocache="true" lit="true"></polyline2d>
                    </shape>
                </transform>
            </scene>
        </x3d>
    </div>

答案 1 :(得分:2)

不完全确定是否要使用PHP附加内容或javascript。考虑在此问题中使用标签

但是对于PHP,你应该在渲染时这样做:

<?php

  $output = '';

  for ($i = 0; $i < 100; $i++) {
    $output .= '<div>' . $i . '</div>';
  }  
?>

<pre id="output"><?=$output?></pre>

在javascript中,您可以使用getElementById()

var output = document.getElementById('output');
for(var i = 0; i < 100; i++) {
   output.appendChild(document.createElement('div'));
}

答案 2 :(得分:1)

这是一个版本,它确实将数字附加到#output,其中php在OP的请求之外。仍然在运行时发生,但这次创建一个字符串,然后根据请求将其附加到<pre>元素。我更喜欢我做的第一个,使用元素中的php,除非有一个明确的理由不使用它,我会先建议帽子。

<pre id="output"></pre> 
<?php 
 $numbers=range (1,100);
    $str="";
    foreach ($numbers as $number) {
        $str .= $number . "<br/>";
        }   
    echo "<script>$('#output').append('$str')</script>";
 ?>

答案 3 :(得分:0)

<?php ob_start(); ?>

<html>
<head></head>
<body>
  <pre id="output">###MARK_PRE###</pre>
</body>
</html>

<?php

$html = ob_get_contents();
ob_end_clean();

$loop_result = "";

$arr = ['apple', 'orange', 'bananas'];

foreach($arr as $value)
{
  $loop_result .= "$value <br/>\n";
}

$html = trim(str_replace('###MARK_PRE###', $loop_result, $html));

echo $html;

这可以胜任。无论你将for循环置于html的下方还是上方,它都能正常工作。

如果将循环放在html之上就足够了,那就简单多了。在这种情况下你应该坚持answer of PierreDuc

如果您真的想将html放在PHP代码之上,那么您实际上应该更好地使用像symfony这样的MVC框架。

我告诉你上面快速而肮脏的方式。

我最后想要注意的是,我没有看到任何将你的php逻辑置于你的html之上的原因。既然只有你的html取决于你的PHP,而不是相反的方式,你承诺自己将HTML放在php上面?

最后一个选项:如果你完全分离你的html和php代码并使用include会更好。你最终会得到两个文件:

template.html.php:

<html>
<head></head>
<body>
  <pre id="output"><?= $pre_tag; ?></pre>
</body>
</html>

logic.php:

$arr = ['apple', 'orange', 'bananas'];

foreach($arr as $value)
{
  $pre_tag.= "$value <br/>\n";
}

include('template.html.php');

但是,干净而坚固的解决方案是使用MVC-Framework。