使用JavaScript函数设置HTML文本框的值?

3
我使用这段代码来使用Javascript函数设置HTML文本框的值,但似乎没有起作用。有人可以指出这段代码有什么问题吗?
Whats your Name?
<input id="name" value="" />

<script type="text/javascript"> 
function setValue(value){
var myValue=value;
document.getElementsById("name").value = myValue;
}
</script>

“value”是来自于我的Android Java类,使用以下代码:
String value = "Isiah";
    WebView web = (WebView) findViewById(R.id.web1);
    web.getSettings().setJavaScriptEnabled(true);
    web.loadUrl("file:///android_asset/www/webpage");
    web.loadUrl("javascript:setValue("+ value +")");

document.getElementsByName("name").value = value - elclanrs
首先,你将传递给函数的值存储在一个变量中(不必要),然后尝试用DOM元素的值覆盖它,并且没有做更多的事情。我说“尝试”,因为getElementsByName返回一个HTMLCollection,而不是DOM元素,更不用说你没有任何带有该名称的元素了。请改用getElementById。此外,你从未调用该函数。最好明确告诉我们你期望你的函数做什么。 - Fabrício Matté
看起来你的任务被反转了。 - Hazem Salama
1
你有一个拼写错误。getElementsById 应该是 getElementById(没有多余的 s)。另外,这个函数从来没有被调用过。 - Fabrício Matté
我怎么能在不使用按钮的情况下调用它? - user1570222
显示剩余3条评论
8个回答

7
   function setValue(value) {
    var myValue=value; //unnecessary
    document.getElementById("name").value= myValue;
}

但是正如评论中指出的那样,你需要在代码中调用setValue(value)。目前你只是定义了这个函数,但并没有调用它。


我怎么能在不使用按钮的情况下调用它? - user1570222
你可以使用按钮/链接或者在页面加载时直接调用函数。这取决于你想要何时填充该框。你希望什么时候发生这种情况? - Hazem Salama

1

您可以通过元素名称访问其值:

  document.getElementsByName("textbox1"); // returns a list of elements with name="textbox1"
    document.getElementsByName("textbox1")[0] // returns the first element in DOM with name="textbox1"

所以:

    input name="buttonExecute" onclick="execute(document.getElementsByName('textbox1')[0].value)" type="button" value="Execute" />

或者您可以为该元素分配一个ID,然后使用getElementById访问它:
    <input name="textbox1" id="textbox1" type="text" />
    <input name="buttonExecute" onclick="execute(document.getElementById('textbox1').value)" type="button" value="Execute" />

0

你没有将函数与任何东西链接起来。例如,一个点击事件:

<input id="name" value="" onclick="javascript:this.value=12;"/>

替换您所需的功能的onclick属性,无论它是什么(您需要更具体)

此外,没有语言属性(至少不再有),请改用type="text/javascript"

这里有一个fiddle:http://jsfiddle.net/4juEp/

单击输入以查看其工作方式。

看看这个第二个fiddle。 http://jsfiddle.net/4juEp/1/

它将hid输入中定义的任何内容加载到name输入中。


如何在不使用按钮的情况下调用它? - user1570222
@user1570222 我从未使用过Android(我打算使用,但现在我一点都不知道)。请看我更新的链接到答案,希望它能帮助,正如我所说,你需要从某个地方调用该函数。观看JavaScript课程http://www.youtube.com/watch?v=v2ifWcnQs6M - Roger
@user1570222,您需要什么?在页面加载时执行它吗? - Roger
@user1570222,你的函数输入是从哪里获取的?在你的示例中是myValue。 - Roger
myValue = value。"value"来自我的Android Java类。 - user1570222
就像我说的,我不懂Android。你只需要将该值替换为你所需的任何值。在我提供的示例中,有足够的信息告诉你如何需要你的javascript,但我直接从DOM(文档对象模型)中获取输入,该DOM是由HTML构建的。如果你能够在隐藏的输入上设置该值,即当你生成HTML时,示例将按原样工作。还需要什么?提供的示例不够用吗? - Roger

0

首先,您的JavaScript函数中有一个拼写错误,即您使用了getElementsById而不是getElementById

为了在页面加载时设置文本框的值,我建议您使用另一种方法

<body onload="setValue('yourValueToSet');">

<!-- Your usual html code in the html file -->

</body>

0

我认为你漏了引号,

尝试使用,

web.loadUrl("javascript:setValue('"+ value +"')");

还要考虑错别字问题。


我将它编辑成了 web.loadUrl("javascript:setValue('"+ value +"')"); 但仍未定义。 - user1570222
我不确定你是否在web.loadUrl("file:///android_asset/www/webpage")的末尾缺少了HTML扩展名,或者尝试使用web.loadUrl("javascript:setValue(\""+ value +"\")") - code-jaff
我已经按照你说的更改了,但仍然是未定义的。 - user1570222

0

看看这个:

<body onload="setvalue($value);">
Whats your Name?<input id="name" name="name" value=""/>
<script type="text/javascript">
function setValue(value){
document.{formname}.name.value = value;}</script>

0

你正在使用 document.getElementsById("name"),应该改为 document.getElementById("name")

不是 Elements,而是 Element


-1

不是Elements,而是Element

你应该使用document.getElementById('object-id');


1
尝试详细阐述你的答案,例如提供代码或文档等。 - Sanoob

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