使用Javascript(jQuery)遍历所有文本区域

13

我想对所有的文本区域执行一些操作,但是使用 $("textarea") 选择它们不起作用。以下是我在 伪代码 中正在尝试做的事情:

for each textarea do
  alert(textarea.val)
在我的情况下,我需要在所有的文本区域中进行单词替换,因此我认为使用迭代来完成会更加清晰简洁,但是我无法想出如何实现。
以下是我目前非常繁琐的方法:
var txtcode = $("#txt_banner1").text().replace("AFFURL",producturl);
$("#txt_banner1").text(txtcode);

var txtcode = $("#txt_banner2").text().replace("AFFURL",producturl);
$("#txt_banner2").text(txtcode);

......等等重复的内容......

谢谢!

4个回答

25
$(function(){
    $("textarea").each(function(){
        this.value = this.value.replace("AFFURL",producturl);
    });
});

查看演示


对于获取文本区域的值,使用REGULAR FREAKING JAVASCRIPT而不是$(this).val()或.text()等无意义的方法,这是一个专业的编程建议。 - Thomas Shields
接受这个是因为它使用了常规的JavaScript,这使得可读性更好。谢谢! :) - Jeff
当我尝试从我的代码中执行$("textarea")时,我会收到ReferenceError: textarea未定义的错误。我是在$(document).ready函数内执行此操作的,这不正确吗? - crusarovid

9
你可以使用.each来迭代所有的textarea元素,并通过jQuery对它们进行必要的操作。 演示链接
$('textarea').each(
    function(){
        alert($(this).val());
    }
);

Reference


3

不要使用id,改为如下操作

$("textarea").each ( function () {

// whatever u want
});

1

http://jsfiddle.net/PKenB/

//alternative 1
$(function() {
    $('textarea').each(function() {
        alert($(this).text())
    })
})

//alternative 2 only those who has specific class  
$(function() {
    $('textarea.myTextArea').each(function() {
        alert($(this).text())
    })
})

//alternative 3, handpicked textareas    
$(function() {
    var handPicked = ['#2', '.myTextArea']
    for (x = 0; x < handPicked.length; x++) {
        alert($(handPicked[x]).text())
    }
})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接