它在文本区域中显示“[对象][对象]”


It is displaying '[Object] [object]' within textarea

我这里有一个应用程序,我想在文本区域中添加一个"问题",但它不是在文本区域中显示"问题",而是在文本区域中显示"[对象][对象]",如何让它显示所选到测试区域中的问题?

要使用该应用程序,请按照下列步骤操作:

  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; 
        ?>  

您的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;
?>