在javascript中传递包含空格的字符串
我有一个像这样的div类,希望调用setlocation函数,它将在文本框中设置状态的值在javascript中传递包含空格的字符串,javascript,jquery,html,Javascript,Jquery,Html,我有一个像这样的div类,希望调用setlocation函数,它将在文本框中设置状态的值 <div class="overview over_widt"> <ul> <li class="auto" title="All India"></li> {% for state_obj in state_list %} <li name="state" class="auto" tit
<div class="overview over_widt">
<ul>
<li class="auto" title="All India"></li>
{% for state_obj in state_list %}
<li name="state" class="auto" title="{{state_obj.name}}"><a href="#{{state_obj.id}}" onclick=javascript:setlocation("{{state_obj.name}}")> {{ state_obj.name }}</a></li>
{% endfor %}
</ul>
还有我的文本框
<input type="text" class="text2" name="location" id="id_autocomplete" placeholder="Enter Location" onfocus="show_div();" onkeyup="div_autocomplete()"/>
但这也不起作用。您必须将HTML属性值用引号括起来:
onclick="setlocation('{{state_obj.name}}')"
否则,带有空格的值将弄乱HTML。如果不使用引号,则仅将下一个空格之前的字符视为值的一部分。因此,如果生成的HTML是
onclick=setlocation("foo bar")
然后您将有一个属性onclick
,其值为setlocation(“foo
和一个布尔属性bar”)
(虽然这可能无效,但我认为属性名称不能包含“
或)
)
但实际上,您可以使用或来代替内联事件处理程序。您必须将HTML属性值用引号括起来:
onclick="setlocation('{{state_obj.name}}')"
否则,带空格的值将弄乱HTML。如果不使用引号,则只有下一个空格之前的字符才被视为值的一部分。因此,如果生成的HTML是
onclick=setlocation("foo bar")
然后您将有一个属性onclick
,其值为setlocation(“foo
和一个布尔属性bar”)
(虽然这可能无效,但我认为属性名称不能包含“
或)
)
但实际上,您可以使用或来代替内联事件处理程序。“传递这些参数会产生问题”,问题到底是什么?使用
encodeURIComponent
对字符串进行编码并将其传递给setlocation.onclick=“javascript:setlocation({{state\u obj.name}”)请注意,javascript:
标签在这里是完全不必要的。“传递这些参数会产生问题”到底是什么问题?使用encodeURIComponent
对字符串进行编码并将其传递给setlocation.onclick=“javascript:setlocation({{state\u obj.name}')”请注意,javascript:
标签在这里是完全没有必要的。如果你解释一下否决票,我可以改进我的答案。没有解释,我几乎无能为力。非常感谢。如果你解释否决票,我可以改进我的答案。没有解释,我几乎无能为力。非常感谢。