我只需要在PHP脚本的某些部分运行一些js,为了测试目的,我注释掉了php,所以我不会在这里显示它。
<!DOCTYPE HTML>
<html>
<head>
<script src="jquery-1.9.1.min.js" type="text/javascript"></script>
</head>
<body>
<?php
echo '<script>
var width = $(window).width();<---Not working down too 1A
var height = $(window).height();
var widthSTR = width.toString();
widthSTR = widthSTR.concat("px");
var heightSTR = height.toString();
heightSTR = heightSTR.concat("px");
heightSTR = " ".concat(heightSTR);
var size = widthSTR.concat(heightSTR);
$("body").css({
"background-size" : size, <---1A and above ^
"background" : "url(p.jpg) 50% 0 no-repeat fixed"<---1B
});
</script>
';
?>
</body>
</html>
我标记为1B的行正常工作,显示背景图像。标记为不起作用的部分似乎没有效果,但是当我在php之外的Script标签中单独运行它时它工作正常。知道为什么/我错过了巨大的错误?提前谢谢。
答案 0 :(得分:2)
将您的代码包装在内:
jQuery(function($) {
// Put your whole code here
});
如果您正在触摸DOM,您应该将jQuery内容包装在该块中;这称为:the .ready()
event用于文档加载。
答案 1 :(得分:2)
如果加载了完整的dom,你的代码应该被执行,如果它取决于正在加载的对象,宽度等等。
<!DOCTYPE HTML>
<html>
<head>
<script src="jquery-1.9.1.min.js" type="text/javascript"></script>
</head>
<body>
<?php
echo '<script>
$(document).ready(function(){
var width = $(window).width();<---Not working down too 1A
var height = $(window).height();
var widthSTR = width.toString();
widthSTR = widthSTR.concat("px");
var heightSTR = height.toString();
heightSTR = heightSTR.concat("px");
heightSTR = " ".concat(heightSTR);
var size = widthSTR.concat(heightSTR);
$("body").css({
"background-size" : size, <---1A and above ^
"background" : "url(p.jpg) 50% 0 no-repeat fixed"<---1B
});
});
</script>
';
?>
</body>
</html>
虽然我没理由你甚至需要回声出弦?为什么不直接在HTML中包含实际的Javascript和echo?
答案 2 :(得分:0)
你试过了吗?
if($condition){
?>
<script>
var width = $(window).width();
var height = $(window).height();
var widthSTR = width.toString();
widthSTR = widthSTR.concat("px");
var heightSTR = height.toString();
heightSTR = heightSTR.concat("px");
heightSTR = " ".concat(heightSTR);
var size = widthSTR.concat(heightSTR);
$("body").css({
"background-size" : size,
"background" : "url(p.jpg) 50% 0 no-repeat fixed"
});
</script>
?>
<?php
}
问题可能是您没有等待加载DOM,请尝试:
if($condition){
?>
<script>
$(function(){
var width = $(window).width();
var height = $(window).height();
var widthSTR = width.toString();
widthSTR = widthSTR.concat("px");
var heightSTR = height.toString();
heightSTR = heightSTR.concat("px");
heightSTR = " ".concat(heightSTR);
var size = widthSTR.concat(heightSTR);
$("body").css({
"background-size" : size,
"background" : "url(p.jpg) 50% 0 no-repeat fixed"
});
});
</script>
?>
<?php
}
但请注意,这与php无关。
答案 3 :(得分:0)
我在希望操纵的元素内添加了“ contenteditable”。示例:
<span class="display" id="echotask" contenteditable>
然后,jQuery函数操纵了我的php脚本回显到文档中的html。考虑到jquery操纵了其他没有该关键字的元素,我也不知道为什么这是必要的,而普通的javascript也成功地操纵了没有关键字的HTML元素。