2009-10-30 2 views
0

Как исправить эту ссылку в javascript.Добавить цитату в текст, полученный javascript

<a href="javascript:clientGalleryLink(Business)">Link</a> 

недостающие одинарные кавычки 'Бизнес'

Javascript:

html += "<option value='javascript:clientGalleryLink(" + titleArray[x] + ")'>" + titleArray[x] + "</option>"; 
+0

ваши два фрагмента не совпадают. один - '', а другой -'

ответ

0

добавить косую черту:

\"" + titleArray[x] + "\" 
0

Попробуйте это, чтобы избежать кавычки атрибутов и, таким образом, давая вам отдельные внутренние кавычки, как показано в вашем примере.

html += "<option value=\"javascript:clientGalleryLink('" + titleArray[x] + "')\">" + titleArray[x] + "</option>"; 
1
<a href='javascript:clientGalleryLink("Business")'>Link</a> 
html += "<option value='javascript:clientGalleryLink(\"" + titleArray[x] + "\")'>" + titleArray[x] + "</option>"; 

Не могли бы вы попробовать этот.

Спасибо.

0

Устранение подобных проблем, поэтому лучше избегать создания JavaScript-in-HTML динамически в строках. Также нельзя использовать схему псевдо-URL javascript:.

Вместо этого рассмотрит «ненавязчивые сценарии» подход: перенос данных из встроенной строки JS и в обычные атрибуты, такой как class или, если ссылка соответствует конкретному элементу на странице, то href себя:

<a class="gallerylink" href="#Business">Link</a> 

for (var i= document.links.length; i-->0;) { 
    if (document.links[i].className==='gallerylink') { 
     document.links[i].onclick= function() { 
      clientGalleryLink(this.hash.substring(1)); 
      return false; 
     }; 
    } 
} 

Второй пример:

html += "<option value='javascript:clientGalleryLink(" + titleArray[x] + ")'>" + titleArray[x] + "</option>"; 

это просто беспорядок. Помимо недостатка \', ссылающегося на значение titleArray, а также отсутствие HTML-экранирования или JS-string-literal-escaping на titleArrays (так что если у вас есть '"<& символов в заголовке, у вас есть проблемы).

Ожидаете ли вы, что сценарий будет выполнен, если этот параметр выбран только потому, что вы положили его в value? Это не так.

Лучше использовать объекты DOM, чем пытаться помешать JavaScript внутри HTML внутри JavaScript внутри HTML. Например, если вы ищете поле выбора, который вызывает clientGalleryLink каждый раз, когда выбранный вариант изменен:

<div id="PlaceWhereYouWantToPutTheSelectBox"></div> 

<script type="text/javascript"> 
    var s= document.createElement('select'); 
    for (var i= 0; i<titleArray.length; i++) { 
     s.options[i]= new Option(titleArray[i], titleArray[i]); 
    } 
    s.onchange= function() { 
     clientGalleryLink(this.options[this.selectedIndex].value); 
    }; 
    document.getElementById('PlaceWhereYouWantToPutTheSelectBox').appendChild(s); 
</script> 

Нет некрасивой миновать необходимости, не межсайтовые-сценариев дыры в безопасности.

Смежные вопросы