我在使用大量PHP和JavaScript更改页面上的变量时遇到了问题。
这部分对我来说很好:
<script language="javascript" type="text/javascript">
function changebg(my)
{
document.getElementById("imglayer").style.backgroundImage ='url('+ my.src +')';
document.getElementById("cropframe").style.backgroundImage ='url('+ my.src +')';
}
var test2 = new String("url('+ my.src +')");
</script>
<img src="../../uploads/595MCoDFyArFFe.jpg" width="50" height="50" onclick="changebg(this)" >
<img src="../../uploads/P6l6J8aqzli6gh.jpg" width="50" height="50" onclick="changebg(this)" >
<img src="../../uploads/stXWS8fL4L3nvs.jpg" width="50" height="50" onclick="changebg(this)" >
稍后调用div ID。
我的问题是我有另一个需要动态更改的变量:
<script type="text/javascript">
var test1 = new String( "<?php $src_name = '" );
var test2 = new String( "956ENbXjzTlkBo.jpg" );
var test3 = new String( "'; // modify this, original file?>");" );
document.write( String( test1, test2, test3 );
</script>
我需要var test2
更改其他两个被div ID抓取的内容。
如何更改该字符串值?这甚至可能吗?
非常感谢任何帮助!
答案 0 :(得分:4)
首先,这不是Java(甚至在Java中你根本不需要它)。你不应该使用new String(…)
;只需使用字符串文字:
var test1 = "…";
等
其次,字符串是不可变的;你不能改变字符串值/对象;你只能创建和分配一个新的字符串。但是,您还可以创建一个用户定义的Object
实例,该实例具有根据其他值(如变量值)返回值的方法:
var test2 = {
toString: function () {
return "foo" + test1 + "bar";
}
};
document.write()
DOM method隐式地将其参数转换为字符串,这可以通过调用hull对象的toString()
或valueOf()
方法来完成,无论哪个方法可用(请参阅ECMAScript Language Specification, 5.1 Edition, section 9.8 )。所以
document.write(test2);
相当于
document.write(String(test2));
document.write(test2.toString());
它将写入toString()
值引用的对象的test2
方法的返回值。 (要动态更改输出,您需要使用其他DOM功能,例如符合标准的textContent
,nodeValue
或专有的innerHTML
属性。)
顺便说一下,String
构造函数只考虑一个参数(见上文),因此new String(x, y, z)
等同于new String(x)
。也许你在寻找连接:new String(x + y + z)
。但如果至少有一个操作数是String
类型,x + y + z
就足够了;如果没有,String(x) + y + z
或"" + x + y + z
有效。
答案 1 :(得分:0)
只需使用正确的引号:
var test2 = new String("url(" + my.src + ")");
或者简单地说:
var test2 = "url(" + my.src + ")";
但是,您无法通过从Javascript编写PHP代码来更改php变量。当Javascript运行时,php脚本已经结束。
答案 2 :(得分:0)
首先,您将采用一种非常奇怪的方式来构建字符串。我假设这一点的目的是,在所有这一切的最后,最终得到一个看起来像这样的字符串:
<?php $src_name = 'X'; // modify this, original file ?>
(这会输出PHP,您的网络服务器不会对其进行解释,但我会假设您知道并且出于其他原因而输出它。)
其中x
是某些其他DOM元素(您的img
个元素之一)中可用的某些数据,因为文件名相似。如果您希望在将来发生任意事件后更新已打印到页面的x
值。您需要为自己提供一些更新的有形元素 - 例如,span
元素。
尝试document.write()
此:
document.write("<?php $src_name = '<span id=\"my-element\">X</span>'; // modify this, original file ?>");
注意我已经改变了你的&lt;和&gt;他们编码的等价物。
然后,您可以在以后使用JavaScript更新span
的内容(请参阅下文)。这不会更改您声明的变量,而是更改页面的内容。因为你只是在它的末尾打印你的字符串(或者,尝试,因为String()不会像你认为的那样连接给定的字符串),在我看来,这就像你在做什么试图完成。
document.getElementById("my-element").innerText = "NEW VALUE";
同样,这不是更新变量本身,只是更新您正在打印到页面的文本。无论如何,这似乎是你的最终目标,如果我错了,请纠正我。