1

正如许多人所建议的那样,我已经尝试将变量保存为 ID 的.value.innerHTML,通过使用document.getElementById. 这是我所有的 HTML:

<html>
<head>
<title>write</title>
<script type="text/javascript" src="g.js"></script>
<link rel="stylesheet" type="text/css" href="g.css" />
</head>

<body>
<div id="box">
    <textarea id="txt" placeholder="placeholder. type here.">text text</textarea>
</div>  
</body> 
</html>

这是我的 javascript,目前用于触发包含文本区域中文本的警报——现在应该是text text

function run(){
var txt = document.getElementById('txt');

alert(txt);}

run()

现在,加载页面会触发带有文本的警报,Null并且添加.value之后getElementById('txt')不会导致警报。提前谢谢了。

4

3 回答 3

4

问题是您的 javascript 在构造 DOM 之前正在执行。当您在<head>文档中加载 JavaScript 文件时,它会<textarea>在创建标记之前立即执行。

尝试将您的脚本块移动到文本区域下方,就在</body>标签之前。

这是一个例子:小提琴

构建 DOM 后,您可以getElementById像 have 一样使用,并且可以通过value属性访问 textarea 的内容。所有这些都在上面的小提琴中。

run()或者,您可以使用在 DOM 准备就绪时提供事件的库来包装您的方法调用。jQuery 的例子是:

$(function () {
  // code you want to execute when the DOM is ready.
  run();
});
于 2012-09-08T04:09:58.210 回答
2
function run() {
  var txt =  document.getElementById("txt").value;

  alert(txt);
 }

 $(document).ready(function(){
            run();
 });

检查这个jsfiddle链接

您没有获得 textarea 值,因为您的 javscript 函数在 DOM 中有值之前被执行

或使用 javascript

function run(){
var txt =  document.getElementById("txt").value;

alert(txt);
}


window.onload = run();

更多关于window.onload

于 2012-09-08T04:07:33.493 回答
1

下面的 javascript 在 Firefox 中工作。事实上,如果你点击这个问题的按钮,你可以在这个页面上的萤火虫answer中试一试......

var textArea = document.getElementById("wmd-input"); // #wmd-input is the text input where your answer goes...
alert( textArea.value );

当然,请确保先输入一些文本。

当您使用它时,您应该尝试一下 jQuery:

alert( $("#wmd-input").val() );

或者更好的是,

console.log($("#wmd-input").val());

希望有帮助。

于 2012-09-08T04:06:17.937 回答