如何在页面加载后触发Javascript函数?
**编辑**如何在页面加载后触发Javascript函数?
恐怕我不是在正确的方向 - 问题不是我问的。 Javascript的工作原理应该是这样的,它是在第一次“运行”时不显示我想要的 的PHP - 而且我不知道为什么。 对不起,有点浪费你的时间......
**
我有可能会或可能尚未包含在其字段中的数据的形式。 如果用户到达表单并且他已经在系统中有一些数据,例如他的ID号码将出现在ID字段中 - 并且运行onLoad的JavaScript函数将禁用输入字段并更改其样式:
<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只有刷新后才能工作。
恐怕我不是在正确的方向 - 问题不是我所问的。 Javascript的工作原理应该是这样的,即PHP在第一次“运行”时不显示我想要的内容 - 而且我不知道为什么。对不起有点浪费你的时间...
您的Javascript在页面加载后运行,问题在别处。
它必须是你的服务器刷新前后发送不同的HTML。我建议如果你保存第一次获得的页面源,并将其与刷新后的源代码进行比较。我敢打赌,你会发现差异,那会告诉你什么是错的。
我试过--HTML是相同的... – 2009-05-24 15:31:21
它是否重现,如果您保存本地HTML并从本地机器打开? – 2009-05-24 15:48:46
@ buti-oxa:是的。 – 2009-05-24 16:10:12
JQuery执行此操作。一旦页面呈现,以下内容将执行:
$(document).ready(function() {
//Call your function here
});
尝试“延迟”属性。
非JS库的回答是:
<script>
window.onload = function(){
/* do stuff */
}
</script>
但是使用JS库如jQuery将采取的所有那些挑剔的跨浏览器的bug /问题护理。
您有权将<script>
块放在您身体的尽头。当浏览器遇到<script>
块时,这会提高页面加载性能。
绝对是不好意思,但你总是可以在窗体下面放置一个2x2透明图像,并使用它的onLoad运行函数。我在一个有条件包含的文件上做了类似的事情,所以在没有包含文件的情况下没有错误。
我建议你将你的内容添加到输出变量,而不是在文件末尾回显它。例如:
...
$output .= '<body onload="runFunction();">';
while(...)
{
$output .= '...';
}
$output .= '</body>';
...
echo $output;
我知道这是真的很晚这篇文章,但这不工作的原因是,PHP呈现HTML,然后你不能再与它互动(除非你可以做一些时髦的AJAX的东西)。要点是JS工作正常bc它是客户端,PHP不工作BC它是服务器端。希望能帮助来到这里的其他人!
表单区域中是否有单独的代码?如果是这样,我们可以请你看看你的表单输入样本,包括PHP? – 2009-05-24 21:01:31
@Fran - 我添加了一些PHP代码,我希望这是可以理解的。 – 2009-05-25 12:51:16