1

これは私のコードです:

<script>
document.getElementById(div').innerHTML = '<a href="javascript:void(0);" onclick="openPhpFile (\'asdasD\\Asdeqw.txt\');">efff</a>';
</script>

関数が実行されるopenPhpFileと、ファイル名に警告します。\文字は2倍になっていますが、消えています。 addslashes()役に立たない; それは何でしょうか?

4

5 に答える 5

3

代わりにこれを行う必要があります。

<script type='text/javascript'>
  (function () { // Closures are your friend
    // Declare variables
    var theDiv, theLink;
    // Create the link and assign attributes
    theLink = document.createElement('a');
    theLink.innerHTML = 'efff';
    theLink.href = '#';
    theLink.onclick = function () {
      openPhpFile('asdasD\\Asdeqw.txt');
    };
    // Get a reference to the container, empty the container and add the link
    theDiv = document.getElementById('div');
    theDiv.innerHTML = '';
    theDiv.appendChild(theLink);
  })();
</script>

echofrom PHP を二重引用符で囲む場合、実際には 4 つのバックスラッシュが必要になることに注意してください。これは、PHP が 2 つのバックスラッシュ シーケンスも使用し、1 つしか出力しないためです。したがって、PHP に 2 つのバックスラッシュをエコーさせたい場合は、4 を入れる必要があります。

于 2011-11-17T15:09:35.390 に答える
2

試す:

var div = document.getElementById("div");

div.innerHTML = '<a>efff</a>';

div.firstChild.onclick = function () {
  openPhpFile('asdasD\\\\Asdeqw.txt');
};
于 2011-11-17T15:18:27.007 に答える
1

なぜここにバックスラッシュが必要なのか疑問に思っていますか? すべての OS がスラッシュをサポートしていませんか (そしてほとんどの OS がスラッシュを好みますか?) おそらく、私は Linux の世界に長くいすぎたのでしょう。

少なくともダブルバックスラッシュにはスラッシュを使用します(明らかに引用符には使用しません)。スラッシュが機能しないことを意味することを知りたいです。

于 2011-11-17T15:12:07.133 に答える
1

js コンソールを開くと、asdasD\Asdeqw.txt

別のスラッシュを追加してみてください。

'<a href="javascript:void(0);" onclick="openPhpFile (\'asdasD\\\Asdeqw.txt\');">efff</a>'
于 2011-11-17T15:06:08.360 に答える
1

バックスラッシュごとに 2 つまたは 3 つではなく、4 つ入れてみましたか?

于 2011-11-17T15:09:51.000 に答える