创建JavaScript函数以更改先前声明的变量

时间:2012-07-16 22:26:12

标签: javascript string function variables getelementbyid

我在使用大量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抓取的内容。 如何更改该字符串值?这甚至可能吗?

非常感谢任何帮助!

3 个答案:

答案 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));

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有效。

答案 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("&lt;?php $src_name = '<span id=\"my-element\">X</span>'; // modify this, original file ?&gt;");

注意我已经改变了你的&lt;和&gt;他们编码的等价物。

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

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

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