我正在通过html / php设计一个表格(这里是小提琴)。
属于表单的html / php代码的片段是:
echo’< table class =“table table-striped”>< thead …
好的,我看到了小提琴。在 理论 它应该工作。问题是JS Fiddle将js代码包装在表单无法找到的范围内。
如果您打开控制台,您将看到消息“函数myFunction不存在”。如果你看到JS Fiddle如何渲染你的代码,你会看到 function myFunction () 在另一个函数中,它不在全局范围内,任何html元素都无法访问它。
function myFunction ()
如果你想要推荐,我会改变一下html。像这样:
除掉 onclick="myFunction()" 从html中添加一个id到该按钮
onclick="myFunction()"
<button id="btn-to-apply-defaults">...
将功能重组为如下所示:
document.getElementById("btn-to-apply-defaults").addEventHandler("click", function () { // here go the contents of the original myFunction() });
这就是有些人称之为“不显眼”的js,这意味着,js并没有直接绑定到html元素本身的元素,而是事后绑定事件。
如果这仍然不起作用,那是因为当你这样做时,DOM中的按钮可能还不存在 getElementById 。这是因为JS Fiddle正在插入脚本 的 以上 强> HTML。您有两种选择:
getElementById
$(document).on("click", "#btn-to-apply-defaults", function () { // here go the contents of the original myFunction() });
这个事件必然会发生 document 本身肯定会存在,但只在“currentTarget”出现时触发 #btn-to-apply-defaults
document
#btn-to-apply-defaults
如果您的输出来自PHP,只需在a中添加此额外行 script 标签。像这样:
script
<script> document.getElementsByClassName("ABC-Fill")[0].addEventListener("click",function(){ let yourForm = document.getElementById("myform"); yourForm.title_en.value = "Good morning."; yourForm.title_fr.value = "Bonjour"; yourForm.description_en.value = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor."; yourForm.description_fr.value = "Dans la biblioth锟斤拷que des composants se trouvent le composant Texte mod锟斤拷le qui vous pouvez faire glisser sur le plan de dessin."; yourForm.program_id.value = 6; }); </script>
另外,给你的按钮一个特定的类来使用它(例如,class =“ABC-Fill”),如下所示:
<a class="btn btn-primary ABC-Fill" style="float:right;" role="button">Insert ABC</a>
这是你的代码工作的小提琴:
https://jsfiddle.net/yw3c2xau/
你应该使用JavaScript来做这件事。
在调用函数的按钮上添加一个onClick锟文件。在函数中设置这些输入的值。
在你的 的jsfiddle 你已经习惯了 document.getElementsByName 然后它回来了 NodeList[] 不是元素。您可能需要使用 document.getElementById 使代码工作。
document.getElementsByName
NodeList[]
document.getElementById
<a class="btn btn-primary" onclick="myFunction()" style="float:right;" role="button">Insert ABC</a>
function myFunction() { document.getElementById("title_en").value="Good Morning"; document.getElementById("title_fr").value="Bonjour"; document.getElementById("description_en").value="Bonjour"; document.getElementById("description_fr").value="Bonjour"; document.getElementById("program_id").value="6"; }
也许你可以生成data-x属性,然后用这些数据填充输入值
HTML:
<form> First: <input data-default="First def" class="put-def" type="text"/> Second: <input data-default="Second def" class="put-def" type="text"/> </form> <button onClick="fill();"> Fill! </button>
JS,以JQuery为例:
function fill(){ $(".put-def").each(function(){ $(this).val($(this).data('default')); }); }
小提琴: https://jsfiddle.net/fh1xapru/10/