**编辑**
我担心我的方向不正确 - 这个问题不是我所问的问题。 Javascript可以正常工作,它是PHP没有显示我想要的东西 在第一次“奔跑” - 我不知道为什么。 对不起有点浪费你的时间......
**
我的表单可能包含或可能不包含其字段中的数据。 如果用户到达表单并且他已经在系统中有一些数据, 例如,他的ID号将出现在ID字段中 - 并且正在运行JavaScript函数 onLoad将禁用输入字段并更改其样式:
<body onload="runFunction()">
问题是它似乎在PHP发挥作用之前运行, 只有当我刷新页面时,JS函数才会执行我想要的所有操作 (它禁用并设置一些依赖于PHP条件的其他表单字段。)
有没有办法让这个JS函数在页面呈现后运行? 我在关闭页面之前尝试运行它:
<body>
...
...
<script>
runFunction();
</script>
</body>
</html>
但无济于事。
任何想法? 谢谢!
一些相关的PHP代码:[我删除了id属性以使阅读更容易]
<?php if ($h_phone != '' && $h_phone_pre != '') {
echo "<td class=\"input\"><input type=\"text\" id=\"new_user_home_tel\" value=\"$h_phone\" size=\"8\" maxlength=\"7\" disabled=\"disabled\" /> -
<select id=\"new_user_home_tel_pre\" disabled=\"disabled\">
<option value=\"$h_phone_pre\" selected=\"selected\"></option>";
} else {
echo '<td class="input"><input type="text" id="new_user_home_tel" size="8" maxlength="7" /> -
<select id="new_user_home_tel_pre">
<option value=" " selected="selected"></option>';
}?> <option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="08">08</option>
<option value="09">09</option>
</select>
</td>
如果字段不为空且可行,Javascript代码只会更改样式, 但PHP只在刷新后才能工作。
答案 0 :(得分:5)
您的Javascript在页面加载后运行,问题出在其他地方。
必须是您的服务器在刷新之前和之后发送不同的HTML。我建议如果您保存第一次获得的页面源,并将其与刷新后获得的源进行比较。我打赌你会发现差异,这会告诉你什么是错的。
答案 1 :(得分:2)
JQuery这样做。呈现页面后,将执行以下内容:
$(document).ready(function() {
//Call your function here
});
答案 2 :(得分:0)
尝试“延迟”属性。
答案 3 :(得分:0)
一种方法是在PHP中输出缓冲页面。这意味着生成的所有内容都会进入内存,直到脚本完成运行,然后它们全部被发送出去。
答案 4 :(得分:0)
<script>
window.onload = function(){
/* do stuff */
}
</script>
然而,使用像JQuery这样的JS库会处理所有那些麻烦的跨浏览器错误/问题。
您有权将<script>
块放在身体的尽头。当浏览器访问<script>
块时,这会提高页面加载性能。
答案 5 :(得分:0)
绝对hacky,但你总是可以在你的表单下面放一个2x2透明图像,并使用它的onLoad运行该功能。我在条件包含的文件上做了类似的事情,因此在没有包含文件的情况下没有错误。
答案 6 :(得分:0)
我建议您将内容添加到输出变量,而不是在文件末尾回显它。例如:
...
$output .= '<body onload="runFunction();">';
while(...)
{
$output .= '...';
}
$output .= '</body>';
...
echo $output;
答案 7 :(得分:0)
我担心我的方向不正确 - 这个问题不是我所问的问题。 Javascript按原样运行,它是PHP在第一次“运行”时没有显示我想要它的东西 - 我不知道为什么。对不起有点浪费你的时间......
答案 8 :(得分:0)
我知道这篇文章的发布时间已经很晚了,但是这不起作用的原因是PHP呈现HTML然后你再也无法与它进行交互(除非你可以做一些时髦的AJAX东西) 。重点是JS工作正常bc它是客户端,PHP不工作bc它是服务器端。希望能帮到其他任何人来这里!