我这里有一个应用程序,我想在文本区域中添加一个"问题",但它不是在文本区域中显示"问题",而是在文本区域中显示"[对象][对象]",如何让它显示所选到测试区域中的问题?
要使用该应用程序,请按照下列步骤操作:
- 当您打开应用程序时,单击绿色加号按钮,这将打开一个模态窗口。
- 您将在模式窗口中看到一个搜索栏,在搜索栏中输入"AAA",然后单击"搜索"
- 您将看到搜索结果出现。单击其中一行旁边的"添加"按钮,我想要的是"问题"字段行中的内容显示在文本区域中。目前它显示"[对象][对象]"。
下面是代码:
<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;
?>
您的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
对象)并将txt
设置为 jQuery 对象。 也许你的意思是txt = questionText;
? 由于所有全局变量和不规则缩进,我很难遵循您的代码。
当你调用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;
?>