单击时如何获取值(循环值)

How to get the value when clicking (loop value)?

本文关键字:循环 获取 单击 何获取      更新时间:2023-09-26

我正在创建从数据库中获取值的网页,会显示几个值。在每个值上,它都会有文本区域和下面的推文按钮。我希望当用户点击推特按钮时,它会从该按钮上方的文本区域获取值。目前,当用户点击按钮Tweet(所有按钮)时,它将只捕获第一个文本区域的值。

这是我的代码

PHP

while($row=mysql_fetch_array($sql)){
    echo "<textarea style='margin-bottom:10px;' id='text_tweet' name='text_tweet' 
    cols='61' rows='5'></textarea>";
    echo "<a style='text-decoration: none; color: #000000;' id='tweet'
          href='#'>Tweet</a>";
}

Javascript

$("#tweet").bind('click', function(){
var text_tweet = $("#text_tweet").val();
if(text_tweet==""){
    alert("Please fill out something");
}
else{
    save_tweet(text_tweet);
}
});

有人能帮我解决这个问题吗?

提前感谢。

您需要区分正在循环的每一行。这里有一个替代方法,假设$row有一个id

PHP

while ($row = mysql_fetch_array($sql)) {
    echo "<textarea style='margin-bottom:10px;' id='text_tweet_" . $row['id'] . "' name='text_tweet_" . $row['id'] . "' cols='61' rows='5'></textarea>";
    echo "<a onclick='doSomething(" . $row['id'] . ")' style='text-decoration: none; color: #000000;' id='tweet_" . $row['id'] . "' href='#'>Tweet</a>";
}

JS-

function doSomething(id) {
    var text_tweet = $("#text_tweet_" + id).val();
    if (text_tweet == "") {
        alert("Please fill out something");
    } else {
        save_tweet(text_tweet);
    }
}

首先,如果您要尝试在一个页面上获取多个元素,则不能使用id,因为它是为单个元素保留的-不应该有多个元素具有相同的id

首先,我会更改它,使每个元素上都有一个名为"tweet"的类。您还需要在它周围添加jQuery $(function(){})。该函数告诉浏览器在页面和所有元素完全加载之前不要运行该JavaScript。

我还将确保在这两个元素周围添加一个容器,这将使您更容易实际获取链接旁边的文本区域。

以下是我的处理方法:

while($row=mysql_fetch_array($sql)){
    echo "<div>";
    echo "<textarea style='margin-bottom:10px;' id='text_tweet' name='text_tweet' 
    cols='61' rows='5'></textarea>";
    echo "<a style='text-decoration: none; color: #000000;' class='tweet'
          href='#'>Tweet</a>";
    echo "</div>";
}

然后是javascript:

$(function() {
$(".tweet").bind('click', function(){
var text_tweet = $(this).parents('div:first').find("textarea").val();
if(text_tweet==""){
    alert("Please fill out something");
}
else{
    save_tweet(text_tweet);
}
});
});

我们之所以使用$(this).parents('div:first').find("textarea").val(),是因为我们只想获取包含div的文本区域;否则,jQuery将获取数组中的第一个textarea值。

相关文章: