创建JavaScript函数以更改之前声明的变量
我在更改PHP和JavaScript的页面上的变量时遇到问题。创建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抓住另外两个变化。 如何更改该字符串值?这甚至有可能吗?
任何帮助将不胜感激!
首先,这不是Java(甚至在Java中你并不需要它)。你不应该使用new String(…)
;简单地使用字符串文字:
var test1 = "…";
等
其次,字符串是不可变的;你不能改变一个字符串值/对象;你只能创建和分配一个新的字符串。但是,也可以创建具有一个返回根据其它值的值(如可变值)的方法的用户定义Object
实例:
var test2 = {
toString: function() {
return "foo" + test1 + "bar";
}
};
的document.write()
DOM method隐式将其参数转换为字符串,其通过完成调用船体对象的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
的作品。
只要使用正确的引号:
var test2 = new String("url(" + my.src + ")");
或者干脆:
var test2 = "url(" + my.src + ")";
但是,你不能从Javascript编写PHP代码改变一个PHP变量。当Javascript运行时,php脚本已经结束。
首先,你要做一个关于构建字符串的非常奇怪的方法。我认为这点是,在这一切结束后,结束了一个字符串,看起来像这样:
<?php $src_name = 'X'; // modify this, original file ?>
(此输出PHP,不会被Web服务器进行解释,但我会假设你知道和你输出其他别的原因。)
哪里x
是某些数据块,在一些其他的DOM元素是可用的(你img
元素之一,或许,因为文件名是类似)。如果您希望在发生某些未来任意事件后更新已打印到页面的此x
值。您需要给自己更新一些有形的元素 - 例如span
元素。
尝试document.write()
荷兰国际集团这:
document.write("<?php $src_name = '<span id=\"my-element\">X</span>'; // modify this, original file ?>");
注意我已经改变了你的<和>及其编码的等价物。
然后,您可以稍后使用JavaScript更新您的span
的内容(请参见下文)。这不会改变您已声明的变量,而是它正在更改页面的内容。既然你只是打印所有字符串(或者试图,因为String()不会连接给定的字符串,就像你认为的那样)),在我看来,这就是你所要做的试图完成。
document.getElementById("my-element").innerText = "NEW VALUE";
再次,这是不更新变量本身,只是更新您打印到网页中的文字。无论如何,这似乎是你的最终目标,如果我错了,请纠正我。
不能'var test1 = new String(“ asawyer 2012-07-16 22:30:33
就像旁边一样,不要声明对象使用字符串,只要'var testetc =“string goes here”;'。 – Daedalus 2012-07-16 22:30:34
你不能随心所欲地混合使用PHP和JS代码。我不明白你想达到什么目的? – haynar 2012-07-16 22:30:54