jQuery获取textarea值为undefined或返回函数源码问题求解
问题修复方案
你的代码存在三处明显错误,修正后即可实现同页面下的赋值需求:
- jQuery选择器语法错误:ID选择器需要加
#前缀,$('floatingTextarea')是标签选择器,会匹配标签名为floatingTextarea的元素,自然找不到目标节点,需要改为$('#floatingTextarea')。 - 取值方法混淆:jQuery封装的对象没有原生DOM的
value属性,直接读取会返回undefined。你可以任选一种正确的取值方式:- 用jQuery提供的
val()方法:var header = $('#floatingTextarea').val() - 取出原生DOM对象再读value:
var header = $('#floatingTextarea')[0].value
你之前调用val()返回函数源码,要么是漏写了val后的执行括号(),要么是选择器错误导致返回了jQuery原型链上的val函数本身。
- 用jQuery提供的
- 语法错误:代码末尾多了一个多余的闭合花括号
},直接删除即可。
修正后的可运行代码
$( "#s1" ).click(function(e) { e.preventDefault(); const h = document.getElementById('noteheader'); const header = $('#floatingTextarea').val(); h.innerHTML = header; // 也可以全用jQuery简化为:$('#noteheader').html($('#floatingTextarea').val()) });
跨HTML文件的特殊处理
如果你需要把内容赋值到另一个独立HTML文件的h1标签,无法直接跨页面操作DOM,需要通过中间载体传值:
- 如果是iframe嵌套的页面:通过父页面访问
iframe.contentWindow对象操作子页面DOM - 如果是跳转打开的新页面:把textarea内容拼接在URL参数中,或者存入
localStorage,新页面加载时读取对应值渲染到h1 - 如果是并行的两个标签页:通过
localStorage配合storage事件监听实现内容同步
内容的提问来源于stack exchange,提问作者Holunk
相关产品推荐
相关产品推荐

