0

我在这里有一个应用程序,我想将“问题”添加到文本区域中,但不是在文本区域中显示“问题”,而是在文本区域中显示“[对象] [对象]”,我怎样才能得到它显示选择到测试区的问题?

要使用该应用程序,请执行以下步骤:

  1. 当您打开应用程序时单击绿色加号按钮,这将打开一个模式窗口。
  2. 您将在模态窗口中看到一个搜索栏,在搜索栏中输入“AAA”并单击“搜索”
  3. 您将看到搜索结果出现。单击其中一行旁边的“添加”按钮,我想要的是要在文本区域中显示的“问题”字段行中的内容。目前它正在显示“[Object] [object]”。

下面是代码:

<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

您的addwindow函数试图将值设置为mainTextareajQuery 对象,而不是字符串。内联评论。

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]
    }
    ....
}

该行var txt = $(this).val(questionText);没有任何意义,因为它设置this(当前是window对象)的值并设置txt为 jQuery 对象。也许你的意思是txt = 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 回答