如何在单击按钮后提取javascript中textarea的id(在本例中是动态的)

How to extract the id of textarea (which is dynamic in this case) in javascript after clicking the button?

本文关键字:动态 id 按钮 提取 javascript textarea 单击      更新时间:2024-03-04

我在生成动态div元素的form中有以下给定的JSP代码:

<div class="answers_panel<%=qcount%>">
    <textarea class="text_<%=qcount%>" id="add_answer<%=qcount%>" rows="0" cols="80"></textarea>
    <input type="hidden" id="hiddenAns" value="<%=qcount%>" />
    <br>
    <br>
    <button class="post<%=qcount%>" onclick="addAns();">Post Answer</button>&nbsp;&nbsp;&nbsp;
    <button class="cancel<%=qcount%>">Cancel</button>
</div>

只需将其传递给javascript例程;

<button class="post<%=qcount%>" onclick="addAns('<%=qcount%>');">Post Answer</button>
...
function addAns(id) {
   var el = $("#text_" + id);
   ...
}

它应该像一样简单

function addAns(el) {
    alert(el.id);
    document.getElementById("hiddenSubmitAns").value = "AddSubmit";
    var text = null;
    var i = 0;
    for (i = 0; i < 3; i++) {
        text = $("#add_answer" + i).val();
        if (text != "") {
            j = i;
            alert(text);
            break;
        }
    }
    text = text.replace(/(^'s*)|('s*$)/g, "");
    if (text == "") {
        alert("Please enter the answer");
        document.getElementById("#add_answer" + i).select();
        document.getElementById("#add_answer" + i).focus();
        return false;
    }
    document.abc.submit();
    return true;
}
<div class="answers_panel<%=qcount%>">
     <textarea class="text_<%=qcount%>" id="add_answer<%=qcount%>" rows="0" cols="80"></textarea>
     <input type="hidden" id="hiddenAns" value="<%=qcount%>" />
     <br>
     <br>
     <button class="post<%=qcount%>" onclick="addAns(this);">Post Answer</button>&nbsp;&nbsp;&nbsp;
     <button class="cancel<%=qcount%>">Cancel</button>
</div>

请注意,我已经向addAns添加了一个参数,然后更新了您的onclick以传递this

然后我提醒el.id,或者如果您使用jQuery,您可以使用alert($(el).attr('id'));

页面上是否有一个以上的文本区域?

如果没有,那么您可以使用$("textarea")访问它,并使用$("textarea").attr("id") 获取它的id

您可以使用jQuery('[attribute^="value"]'),它选择具有指定属性的元素,该属性的值以给定字符串开头。

var theTextArea = $('textarea[id^="add_answer"]');

然后

var theId = theTextArea.attr("id");
var elements = document.getElementsByTagName('textarea');
for(var i = 0; i < elements.length; i++) {
    if(elements[i].class.indexOf('text') === 0) {
         return elements[i].id;
    }
}