0

ここに「質問」をテキストエリアに追加したいアプリケーションがありますが、テキストエリア内に「質問」を表示する代わりに、テキストエリア内に「[オブジェクト] [オブジェクト]」を表示しています。どうすれば取得できますか選択した問題をテストエリアに表示しますか?

アプリケーションを使用するには、次の手順に従います。

  1. 緑のプラスボタンをクリックしてアプリを開くと、モーダルウィンドウが開きます。
  2. モーダル ウィンドウに検索バーが表示されます。検索バーに「AAA」と入力し、[検索] をクリックします。
  3. 検索結果が表示されます。行の横にある「追加」ボタンをクリックすると、「質問」フィールド行内のコンテンツがテキストエリアに表示されるようになります。現時点では「[オブジェクト] [オブジェクト]」と表示されています。

以下はコードです:

<head>
<script type="text/javascript">

var plusbutton_clicked;

function plusbutton() { 
    // Display an external page using an iframe 
    var src = "previousquestions.php"; 
    $.modal('<iframe src="' + src + '" style="border:0;width:100%;height:100%;">');
    return false;
} 


function closewindow() {     

    $.modal.close(); 
    return false;
} 

$('.plusimage').live('click', function() {
    plusbutton($(this));
});


function plusbutton(plus_id) {
    // Set global info
    plusbutton_clicked = plus_id;
    // Display an external page using an iframe
    var src = "previousquestions.php";
    $.modal('<iframe src="' + src + '" style="border:0;width:100%;height:100%;">');
    return false;
}


function addwindow(questionText) { 

    if(window.console) console.log();
        var txt = $(this).val(questionText);

    if($(plusbutton_clicked).attr('id')=='mainPlusbutton') { 
        $('#mainTextarea').val(txt);
        }

    $.modal.close(); 
    return false;
} 


</script>

</head>

<body>

<form id="QandA" action="<?php echo htmlentities($action); ?>" method="post">

<div id="detailsBlock">
<table id="question">
<tr>
    <td rowspan="3">Question:</td> 
    <td rowspan="3">
        <textarea class="questionTextArea" id="mainTextarea" rows="5" cols="40" name="questionText"></textarea>
    </td>
</tr>
</table>

<table id="plus" align="center">
<tr>
<th>
<a onclick="return plusbutton();">
<img src="Images/plussign.jpg" width="30" height="30" alt="Look Up Previous Question" class="plusimage" id="mainPlusbutton" name="plusbuttonrow"/>
</a>
<span id="plussignmsg">(Click Plus Sign to look <br/> up Previous Questions)</span>
</th>
</tr>
</table>

</div>
<hr/>

</form>

</body> 

以下は、検索結果に「質問」フィールドを出力するコードです。

<?php 

$output = ""; 

        while ($questionrow = mysql_fetch_assoc($questionresult)) { 
$output .= " 
<table> 
      <tr> 
      <td class='addtd'><button type='button' class='add' onclick='parent.addwindow();'>Add</button></td> 
      </tr>"; 
        } 
        $output .= "        </table>"; 

        echo $output; 

        ?>  
4

2 に答える 2

1

関数は、の値を文字列ではなく jQuery オブジェクトにaddwindow設定しようとしています。mainTextareaコメントインライン。

function addwindow(questionText) {

    // this line tries to set the `value` property of window to questionText, which makes no sense
    var txt = $(this).val(questionText);

    // also, that line returns the jQuery object (because of chaining), so `txt` is now a jQuery object holding the window object        

    if($(plusbutton_clicked).attr('id')=='mainPlusbutton') {
        $('#mainTextarea').val(txt);  // txt is the jQuery object, stringified to [object Object]
    }
    ....
}

この行は(現在オブジェクトである)の値を設定し、jQuery オブジェクトに設定var txt = $(this).val(questionText);するため、まったく意味がありません。おそらくあなたは意味しましたか?すべてのグローバル変数と不規則なインデントが原因で、コードをたどるのが非常に困難です。thiswindowtxttxt = questionText;

于 2012-06-01T17:21:21.637 に答える
0

あなたが呼び出すとき、あなたparent.addWindow()は引数を渡しておらず、関数はそれを期待しています。

var txt = $(this).val(questionText);に設定txt$(this)ます。

そのため、印刷してい[object object]ます。

編集:悪い情報を修正しました。

編集:コメントに基づいて以下に追加

function addwindow(questionText) { 
    if(window.console) console.log();
    var txt = $(this).val(questionText);
    if($(plusbutton_clicked).attr('id')=='mainPlusbutton') { 
        $('#mainTextarea').val(txt);
    }
    $.modal.close(); 
    return false;
}

次のようにする必要があります。

function addwindow(questionText) { 
    if(window.console) console.log();
    if($(plusbutton_clicked).attr('id')=='mainPlusbutton') { 
        $('#mainTextarea').val(questionText);
    }
    $.modal.close(); 
    return false;
}

<?php 
$output = ""; 
while ($questionrow = mysql_fetch_assoc($questionresult)) { 
    $output .= " 
    <table> 
        <tr> 
            <td class='addtd'><button type='button' class='add' onclick='parent.addwindow();'>Add</button></td> 
        </tr>"; 
} 
$output .= "        </table>"; 
echo $output; 
?>

次のようにする必要があります。

<?php
$output = "";
while ($questionrow = mysql_fetch_assoc($questionresult)) {
    $output .= '
    <table>
        <tr>
            <td class="addtd"><button type="button" class="add" onclick="parent.addwindow(\''.$questionrow['text'].'\');">Add</button></td>
        </tr>';
}
$output .= "        </table>";
echo $output;
?>
于 2012-06-01T17:22:42.637 に答える