嵌套字符串 - 3 层 - 带引号
Nested strings - 3 levels - with quotes
我有这个(这是代码的一部分):
<select class="form-select" id="topicId" name="topicId" onchange="javascript:
var data = $(':input[name]', '#dynamic-form').serialize();
$.ajax(
'ajax.php/form/help-topic/' + this.value,
{
data: data,
dataType: 'json',
success: function(json) {
var eng1 = document.querySelectorAll('input[type="text"]');
eng1[eng1.length-1].style.display = 'none';
}
});">
问题是 input[type="text"]
- 类型 text 周围的引号给我带来了严重的问题,因为整段代码已经包含在“”中。
但是我到底该如何解决呢?
有什么想法吗?
我不明白为什么不把所有的都写在里面<script>
..?但无论如何,您可以将所有单个标签 ( ' ) 更改为反向标签,然后将全局 double-tags ( onchange="..."
) 更改为单个标签。
最简单的解决方案是将 onchange
属性中的代码提取到函数中,然后从属性中调用该函数。
function sendAjax() {
var data = $(':input[name]', '#dynamic-form').serialize();
$.ajax(
'ajax.php/form/help-topic/' + this.value, {
data: data,
dataType: 'json',
success: function(json) {
var eng1 = document.querySelectorAll('input[type="text"]');
eng1[eng1.length - 1].style.display = 'none';
}
});
}
<select class="form-select" id="topicId" name="topicId" onchange="sendAjax()">
或者你可以在不使用 onchange
.
的情况下从 JS 绑定事件监听器
$("#topicId").change(function() {
var data = $(':input[name]', '#dynamic-form').serialize();
$.ajax(
'ajax.php/form/help-topic/' + this.value, {
data: data,
dataType: 'json',
success: function(json) {
var eng1 = document.querySelectorAll('input[type="text"]');
eng1[eng1.length - 1].style.display = 'none';
}
});
});
<select class="form-select" id="topicId" name="topicId">
如果出于某些原因您 必须 将所有代码放在 onchange
中,您可以在名称周围使用单引号而不是双引号。您需要对它们进行转义,因为在选择器周围使用了单引号。
<select class="form-select" id="topicId" name="topicId" onchange="javascript:
var data = $(':input[name]', '#dynamic-form').serialize();
$.ajax(
'ajax.php/form/help-topic/' + this.value,
{
data: data,
dataType: 'json',
success: function(json) {
var eng1 = document.querySelectorAll('input[type=\'text\']');
eng1[eng1.length-1].style.display = 'none';
}
});">
最后,您只需使用$('input:text:last').hide()
。
我有这个(这是代码的一部分):
<select class="form-select" id="topicId" name="topicId" onchange="javascript:
var data = $(':input[name]', '#dynamic-form').serialize();
$.ajax(
'ajax.php/form/help-topic/' + this.value,
{
data: data,
dataType: 'json',
success: function(json) {
var eng1 = document.querySelectorAll('input[type="text"]');
eng1[eng1.length-1].style.display = 'none';
}
});">
问题是 input[type="text"]
- 类型 text 周围的引号给我带来了严重的问题,因为整段代码已经包含在“”中。
但是我到底该如何解决呢?
有什么想法吗?
我不明白为什么不把所有的都写在里面<script>
..?但无论如何,您可以将所有单个标签 ( ' ) 更改为反向标签,然后将全局 double-tags ( onchange="..."
) 更改为单个标签。
最简单的解决方案是将 onchange
属性中的代码提取到函数中,然后从属性中调用该函数。
function sendAjax() {
var data = $(':input[name]', '#dynamic-form').serialize();
$.ajax(
'ajax.php/form/help-topic/' + this.value, {
data: data,
dataType: 'json',
success: function(json) {
var eng1 = document.querySelectorAll('input[type="text"]');
eng1[eng1.length - 1].style.display = 'none';
}
});
}
<select class="form-select" id="topicId" name="topicId" onchange="sendAjax()">
或者你可以在不使用 onchange
.
$("#topicId").change(function() {
var data = $(':input[name]', '#dynamic-form').serialize();
$.ajax(
'ajax.php/form/help-topic/' + this.value, {
data: data,
dataType: 'json',
success: function(json) {
var eng1 = document.querySelectorAll('input[type="text"]');
eng1[eng1.length - 1].style.display = 'none';
}
});
});
<select class="form-select" id="topicId" name="topicId">
如果出于某些原因您 必须 将所有代码放在 onchange
中,您可以在名称周围使用单引号而不是双引号。您需要对它们进行转义,因为在选择器周围使用了单引号。
<select class="form-select" id="topicId" name="topicId" onchange="javascript:
var data = $(':input[name]', '#dynamic-form').serialize();
$.ajax(
'ajax.php/form/help-topic/' + this.value,
{
data: data,
dataType: 'json',
success: function(json) {
var eng1 = document.querySelectorAll('input[type=\'text\']');
eng1[eng1.length-1].style.display = 'none';
}
});">
最后,您只需使用$('input:text:last').hide()
。