我有一个应用程序here,我想在textarea中添加一个“问题”但不是在textarea中显示“问题”,而是在textarea中显示“[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;
?>
答案 0 :(得分:1)
您的addwindow
函数正在尝试将mainTextarea
的值设置为jQuery对象,而不是字符串。评论内联。
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
对象)的值并设置{{1一个jQuery对象。也许你的意思是txt
?由于所有的全局变量和不规则的缩进,我对你的代码非常困难。
答案 1 :(得分: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;
?>