在刷新网页之前加载javascript
以下是我的HTML代码:在刷新网页之前加载javascript,javascript,html,jquery,django,google-maps,Javascript,Html,Jquery,Django,Google Maps,以下是我的HTML代码: <script src="https://maps.googleapis.com/maps/api/js?key=mykey&callback=initMap&v=quarterly" defer></script> <script src="{% static '/javascript/maplanguage.js' %}"></script> &
<script src="https://maps.googleapis.com/maps/api/js?key=mykey&callback=initMap&v=quarterly" defer></script>
<script src="{% static '/javascript/maplanguage.js' %}"></script>
<form action="{% url 'set_language' %}" method="post">{% csrf_token %}
<input name="next" type="hidden" value="{{ redirect_to }}" />
<select id="sel_id" name="language" onchange="this.form.submit();">
{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
{% get_language_info_list for LANGUAGES as languages %}
{% for language in languages %}
<option class="option" value="{{ language.code }}"{% if language.code == LANGUAGE_CODE %} selected="selected"{% endif %} >
{{ language.name_local }} ({{ language.code }})
</option>
{% endfor %}
</select>
</form>
但问题是:
当我从下拉列表中选择一个选项时,页面将立即刷新。
然后我无法在JS中获得“lang”的值。[这意味着“警报”可以在刷新页面之前工作,但是“console.log”没有任何内容
那我怎么能让我的页面等待我的JS呢?在你的HTML中,你的表单会在每次选择更改时提交。提交表单意味着整个页面都会刷新,因此即使你更改了谷歌地图语言,页面刷新后它也会丢失。(除非你先将其存储在某个地方) 有几种方法可以解决这个问题:
变量lang={%currentLang%}
lang
,并将其传递给google地图。
请注意,下面是一些伪代码,需要验证表单是否仍在该函数中提交
函数onSelectChange(){
var elem=document.getElementById('sel_id');
var langValue=elem.options[elem.selectedIndex].value;
setItem('lang',langValue);
这个.form.submit();
}
。。。
使用键从localstorage获取值
var lang=localStorage.getItem('lang');
用它来设置谷歌地图的语言,我怎么能这样做呢?因为我尝试了
在'lang'中有一个错误,而且我在第12行得到了无效的块标记:'currentLang'。你忘记注册或加载这个标记了吗?当我添加var lang={%currentLang%}
到我的'base.html'。我如何解决它呢?你需要使用Django的模板括号在那里插入语言代码。我不熟悉Django(这是一种服务器语言),但我的想法是使用它从服务器端确定语言并插入到脚本标记中。例如:…&language={%language%}&…
对于无效块问题,“我的代码”仅作为示例显示。您需要有一种方法从服务器获取语言代码,并将其分配给类似currentLang的内容。
#maplanguage.js
document.getElementById('sel_id').addEventListener('change', () => {
let lang = $(this).find('option:selected').val();
// console.log(lang);
// alert("You have selected the language code: " + lang);