0

PHPlot 画像を含む php ページがあり、データ値を新しいウィンドウ (または警告画面、配列サイズ (> 10k 値) のために望ましくない) に出力するボタンを追加したいのですが、そうではありません。それがどのように機能するかは確かです。

  1. 私はwindow.openを検討しましたが、それにはURLが必要なので、それがどのように機能するかわかりません
  2. $.each を使用して配列をループして値を出力することも考えましたが、新しいウィンドウには表示されません。

これまでのところ、次のスクリプト チャンクがあります。

$('.XY').click(function() {
  var mz_array = <?php echo json_encode($mz_array) ?>;
  var int_array = <?php echo json_encode($int_array) ?>;
  for (var i = 0; i < mz_array.length; i++) {
    // This is obviously not what I want, it is just here to demonstrate the alert idea
    //alert(mz_array[i] - TAB - int_array[i]);
    // The below idea has my preference
    //window.open( /* printf(mz_array[i] + "\t" + int_array[i] + "\n" */ );
  }
});

これを行うためのスマートな方法に関する提案があれば幸いです。

PS: 1 と 2 の記述は私の限られた知識に基づいているため、間違っている可能性があります。

4

1 に答える 1

1

代替ソリューション(配列が同じサイズである必要はありません)

$(function() {
    $('.XY').click(function() {
        var mz_array = <?php echo json_encode($mz_array) ?>;
        var int_array = <?php echo json_encode($int_array) ?>;

        var output = mz_array.map( function(val, idx) {
            return (val + "\t" + (int_array[idx] || "") );
        });

        var disp = window.open('','','width=400,height=150');
        $(disp.document.body).text( output.join("\t") );
    });
});

基本的に、これは結果を 1 つの配列にマージしてから、結果を警告します。ただし、この種のデータ処理はおそらく PHP のバックエンドで行う必要があり、次のような、より便利な構造を持つオブジェクトを返す方が便利な場合があります。

[{ mz: 'abc', int: 1 }, { mz: 'def', int: 2 }, { mz: 'ghi', int: 13 }, ...]

両方の配列の長さが同じであると仮定します。

$(function() {
    $('.XY').click(function() {
        var mz_array = <?php echo json_encode($mz_array) ?>;
        var int_array = <?php echo json_encode($int_array) ?>;
        var output = [];

        for (var i=0; i < (mz_array.length + int_array.length); i++ ) {
            output.push ( i%2 ? int_array[i] : mz_array[i] );
        }

        var disp = window.open('','','width=400,height=150');
        $(disp.document.body).text( output.join("\t") );
    });
});
于 2013-02-18T14:24:32.627 に答える