我可以使用document.getElementById.write();写在heredoc里面?

时间:2013-10-16 14:44:43

标签: javascript php html document.write

我希望能够在heredoc语法中编辑内容。像这样:

的index.php:

$var = <<<HTML
                <form action="index.php" method="get" id="forma">
                <input type="radio" name="choice" value="value">Message<br>

                </form>
HTML;
...
$form = $var;   

JS:

<script>
document.getElementById('forma').open();
document.getElementById('forma').write('<input type="submit">');    
document.getElementById('forma').close();
</script>

编辑:我的目标是有一个按钮转到新页面,但只有在JS confirm()弹出窗口中单击“确定”后,该按钮才会出现。

2 个答案:

答案 0 :(得分:2)

你想做什么(改变HEREDOC)是不可能的。

PHP在服务器上被解释,结果是带有一些嵌入式JS的HTML文件。 只有在此HTML文件到达客户端并被解释之后,才会执行JS。此时,包含HEREDOC的原始PHP文件早已不复存在。

然而,你可以做的是在客户端操纵DOM,但你应该element.innerHTML作为document.write的替代。

答案 1 :(得分:0)

如果我理解正确,您希望有一个按钮在用户操作后变得可见。我建议创建隐藏按钮,然后通过JS显示它,而不是通过JS创建它。

所以你的HTML变成了:

$var = <<<HTML
  <form action="index.php" method="get" id="forma">
      <input type="radio" name="choice" value="value">Message<br>
      <!-- Note the *style* attribute -->
      <input type="submit" style="display: none;" id="submitBtn">  
  </form>
HTML;

然后在您的JS中,只要confirm()调用成功,就会立即显示该按钮:

function someJsHandler() {
  if (confirm("Your message here")) {
    var button = document.getElementById('submitBtn');
    button.style.display = 'block'; // Makes the button visible
  }
}

编辑: JsFiddle:http://jsfiddle.net/bQ6Un/