我正在寻找一种方法将一些隐藏的表单数据发送到Django服务器,这很好,只要将javascript和html(模板)保存在同一个文件中,但现在我是试图将它们分开。
可能非常简单,但我想我所要做的就是获取(设置?)窗口/ html的'名称'并从javascript模块访问它?
HTML:
<html>
<head>
<script src="/media/postIt.js"></script>
</head>
<body>
<form action="" method="post" id="postForm">{% csrf_token %}
<input type="hidden" id="scoreField1" name="score1"></input>
<input type="hidden" id="scoreFieldSet1" name="score1Set"></input>
<input type="hidden" id="scoreField2" name="score2"></input>
<input type="hidden" id="scoreFieldSet2" name="score2Set"></input>
<input type="hidden" id="scoreField3" name="score3"></input>
<input type="hidden" id="scoreFieldSet3" name="score3Set"></input>
</form>
<table>
<tr>
<td id="bg1" onclick="postIt('score1')">
Ones
</td>
<td id="bg1_1">
</td>
</tr>
<tr>
<td id="bg2" onclick="postIt('score2')">
Twos
</td>
<td id="bg2_1">
</td>
</tr>
</table>
使用Javascript:
function postIt(x){
var pointArray = [d1,d2,d3,d4,d5];
var totVal = d1+d2+d3+d4+d5;
pointArray.sort(function(a,b){return a-b});
alert(pointArray);
alert("total value: " + totVal);
if(x == "score2"){
if("{{ res.score2Set }}" == 0){
var form = document.getElementById('postForm');
document.getElementById('scoreField1').value = score1;
document.getElementById('scoreFieldSet1').value = score1Set;
document.getElementById('scoreField2').value = score;
document.getElementById('scoreFieldSet2').value = 1;
document.getElementById('scoreField3').value = score3;
document.getElementById('scoreFieldSet3').value = score3Set;
form.submit();
}
}
编辑: 澄清: 我只能通过调用document.getElement来访问html'文档'中的元素,因为它们现在位于不同的文档中(物理上...)。我想我不得不以某种方式为文档分配名称/变量。 它的呼吁如下: nameOfDocument.getElement ..
依旧......
答案 0 :(得分:2)
我猜那行
if("{{ res.score2Set }}" == 0)
是问题 - 包含的Javascript文件不会通过Django模板加载器,所以你不能在其中放置变量。此条件将始终评估为false。
您需要以某种方式在模板文件中设置变量,然后在Javascript中检索它。执行此操作的最佳方法可能是将res.score2Set
添加为postIt()函数的附加参数,然后执行:
<td id="bg1" onclick="postIt('score2', '{{ res.score2Set }}')">
虽然我显然不知道您的应用程序做了什么,但这可能不适用。如果在HTML的其他地方使用res.score2Set
,最好从Javascript中的DOM加载它。
答案 1 :(得分:0)
你对javascript的假设是错误的。无论你编写JS代码(内联,文件,外部文件),所有JS代码都可以访问DOM。所以问题是你没有正确加载你的JS文件。