2012-07-16 85 views
0

我在更改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抓住另外两个变化。 如何更改该字符串值?这甚至有可能吗?

任何帮助将不胜感激!

+4

不能'var test1 = new String(“<?php $ src_name ='”);'简单地'var test1 =“<?php $ src_name ='”;'? – asawyer 2012-07-16 22:30:33

+2

就像旁边一样,不要声明对象使用字符串,只要'var testetc =“string goes here”;'。 – Daedalus 2012-07-16 22:30:34

+0

你不能随心所欲地混合使用PHP和JS代码。我不明白你想达到什么目的? – haynar 2012-07-16 22:30:54

回答

4

首先,这不是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)); 

section 15.5.1)或

document.write(test2.toString()); 

它将写该对象的toString()方法的返回值通过的test2值提及。 (对于输出的动态变化,你需要使用其他的DOM功能,如符合标准的textContentnodeValue,或专有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的作品。

0

只要使用正确的引号:

var test2 = new String("url(" + my.src + ")"); 

或者干脆:

var test2 = "url(" + my.src + ")"; 

但是,你不能从Javascript编写PHP代码改变一个PHP变量。当Javascript运行时,php脚本已经结束。

0

首先,你要做一个关于构建字符串的非常奇怪的方法。我认为这点是,在这一切结束后,结束了一个字符串,看起来像这样:

<?php $src_name = 'X'; // modify this, original file ?> 

(此输出PHP,不会被Web服务器进行解释,但我会假设你知道和你输出其他别的原因。)

哪里x是某些数据块,在一些其他的DOM元素是可用的(你img元素之一,或许,因为文件名是类似)。如果您希望在发生某些未来任意事件后更新已打印到页面的此x值。您需要给自己更新一些有形的元素 - 例如span元素。

尝试document.write()荷兰国际集团

document.write("&lt;?php $src_name = '<span id=\"my-element\">X</span>'; // modify this, original file ?&gt;"); 

注意我已经改变了你的<和>及其编码的等价物。

然后,您可以稍后使用JavaScript更新您的span的内容(请参见下文)。这不会改变您已声明的变量,而是它正在更改页面的内容。既然你只是打印所有字符串(或者试图,因为String()不会连接给定的字符串,就像你认为的那样)),在我看来,这就是你所要做的试图完成。

document.getElementById("my-element").innerText = "NEW VALUE"; 

再次,这是不更新变量本身,只是更新您打印到网页中的文字。无论如何,这似乎是你的最终目标,如果我错了,请纠正我。