0

多くの 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 test2div ID によって取得されている他の 2 つを変更する必要があります。その文字列値を変更するにはどうすればよいですか? これは可能ですか?

どんな助けでも大歓迎です!

4

3 に答える 3

4

まず第一に、これは Java ではありません (そして、Java でも実際には必要ありません)。使用しないでくださいnew String(…)。文字列リテラルを使用するだけです。

var test1 = "…";

第二に、文字列は不変です。文字列値/オブジェクトを変更することはできません。新しい文字列を作成して割り当てることしかできません。Objectただし、他の値 (変数値など) に従って値を返すメソッドを持つユーザー定義のインスタンスを作成することもできます。

var test2 = {
  toString: function () {
    return "foo" + test1 + "bar";
  }
};

document.write()DOM メソッドは、その引数を暗黙的に文字列に変換します。これは、hull オブジェクトtoString()またはvalueOf()メソッドのうち、最初に利用可能な方を呼び出すことによって行われます ( ECMAScript 言語仕様、5.1 版、セクション 9.8 を参照)。そう

document.write(test2);

と同等です

document.write(String(test2));

セクション15.5.1)または

document.write(test2.toString());

toString()の値が参照するオブジェクトのメソッドの戻り値を書き込みますtest2textContent(出力を動的に変更するには、標準に準拠した、nodeValue、または独自のプロパティなど、他の DOM 機能を使用する必要がありinnerHTMLます。)

ところで、Stringコンストラクターは 1 つの引数 (上記を参照) のみを考慮するため、new String(x, y, z)と同等new String(x)です。連結を探していたのかもしれません: new String(x + y + z). ただし、少なくとも 1 つのオペランドが型String,である場合はx + y + z十分です。そうでない場合、String(x) + y + zまたは"" + x + y + z動作します。

于 2012-07-16T22:40:27.420 に答える
0

正しい引用符を使用してください:

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

または単に:

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

ただし、Javascript から php コードを記述して php 変数を変更することはできません。Javascript が実行されると、php スクリプトは既に終了しています。

于 2012-07-16T22:45:03.230 に答える
0

まず、文字列の作成について非常に奇妙な方法をとっています。これのポイントは、これらすべての終わりに、次のような文字列になることだと思います。

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

(これは PHP を出力しますが、これは Web サーバーによって解釈されませんが、それを知っていて、他の理由で出力していると仮定します。)

他の DOM 要素 (ファイル名が似ているため、おそらくxあなたの要素の 1 つ) で利用可能なデータの一部はどこにありますか? imgその後、必要に応じて、将来の任意のイベントが発生した後に、ページに出力されたこのx値を更新します。要素など、更新する具体的な要素を自分で用意する必要がありますspan

これを試してdocument.write()ください:

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

< と > をエンコードされた同等のものに変更したことに注意してください。

spanその後、後日 JavaScript を使用してコンテンツを更新できます(以下を参照)。これは、宣言した変数を変更するのではなく、ページのコンテンツを変更することです。すべての最後に文字列を印刷しているだけなので(または、 String() が指定された文字列を連結すると思われるように連結しないため)、これがあなたがしていることのように思えます達成しようとしています。

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

繰り返しますが、これは変数自体を更新するのではなく、ページに印刷するテキストを更新するだけです。とにかくこれがあなたの最終目標のようです。間違っている場合は修正してください。

于 2012-07-16T22:47:48.363 に答える