[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Заменить значение переменной при клике.
Lightt
Есть такой плагин - datatables ( http://datatables.net ).
Я хочу его прикрутить на свой сайт.
Но мне не нравится, что вывод количества строк там происходит через select.
Хочется что бы было просто 10 50 100 все.

<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
var found = 60;

$('#t10').click(function(){ var found = 10; });

$('#example').dataTable( {
"sPaginationType": "full_numbers",
"iDisplayLength": found,
"aLengthMenu": [[10, 50, 100, -1], [10, 50, 100, "Все"]]
} );
} );
</
script>


За вывод отвечает iDisplayLength.
Единственное что пришло в голову это
$('#t10').click(function() {var found = 10; });	

Но такой код не срабатывает =(
sergeiss
Цитата (Lightt @ 11.01.2014 - 00:54)
Но такой код не срабатывает =(

Ну почему ж не срабатывает? Он срабатывает smile.gif Создает переменную и присваивает ей величину.

Но вот куда ты хотел её вывести, я не понял. И как ты пытался вывести, я тоже не понял. Может кто-то другой понял?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Lightt
sergeiss
Сейчас попробую разъяснить.
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
var found = 60;
$('#t10').click(function(){ found = 10; });
$('#example').dataTable( {
"sPaginationType": "full_numbers",
"iDisplayLength": found,
"aLengthMenu": [[10, 50, 100, -1], [10, 50, 100, "Все"]]
} );
} );
</
script>

Вот тут создается переменная var found = 60; и она работает.
Далее, вот тут, при клике на #t10
 $('#t10').click(function(){ found = 10; }); 
она должна замениться на 10.
А выводится она вот тут
"iDisplayLength": found,

Но все это не работает =(
Могу привести аналогичный код на php где будет срабатывать, но тогда будет перезагрузка страницы.
AllesKlar
Цитата
она должна замениться на 10.

Она заменяется.
Посмотри в дебагере или в консоли или добавь
$('#t20').click(function(){alert(found);}); 


У тебя что-то с выводом не то.

_____________
[продано копирайтерам]
Lightt
AllesKlar
Видимо там все гораздо сложнее. Сделал на php с перезагрузкой) всеравно бы скорей всего пришлось)
AllesKlar
Зачем с перезагрузкой? Бахай уже Ajax-ом тогда

_____________
[продано копирайтерам]
kristall
Вангую, что скорее всего проблема в области видимости переменной.

_____________
echo '<pre>',print_r($var, 1);die;

root@server# make love && war
AllesKlar
kristall
Наташа, не пори чушь.



_____________
[продано копирайтерам]
sergeiss
Цитата (Lightt @ 11.01.2014 - 05:23)
Видимо там все гораздо сложнее.

Цитата (kristall @ 11.01.2014 - 10:53)
скорее всего проблема в области видимости переменной.

Нету там ничего сложного... Правильно тебе сказали всё. И код твой срабатывает, я тоже не ошибся. Просто у тебя есть 2 разных переменных с одним именем. Ты когда пишешь "var found=...", то каждый раз создается новая переменная в текущем namespace. Вот и получается, что (если смотреть в начальном коде), у тебя переменной found присваивается величина 60, затем внутри функции ДРУГОЙ переменной с таким же именем присваивается 10. При выходе из функции внутренняя переменная забывается, а у первой так и остается величина 60. Ты ж её не трогал!


Так что - всё работает. Другое дело, что не так, как ты хочешь. А достаточно было в начальном коде убрать слово "var" в строке "var found=10" и оно должно было бы заработать.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
AllesKlar
sergeiss
А разве это не так:
var found = 60 - локальная для функции $(document).ready(function()){}
Следовательно, глобальная для всех внутри определенных функци. А, т.к. $(document).ready является "оболочкой" для всех остальных функция, то и var found = 60 является глобальной для всех.

Во всех остальных функциях обращение к переменной идет как found - это обращение к ГЛОБАЛЬНОЙ переменной. Т.е. к той, которая была проинициилизирована как var found = 60 и никакие локальные found не создаются

_____________
[продано копирайтерам]
bestxp
Цитата (sergeiss @ 11.01.2014 - 13:09)
Цитата (Lightt @ 11.01.2014 - 05:23)
Видимо там все гораздо сложнее.

Цитата (kristall @ 11.01.2014 - 10:53)
скорее всего проблема в области видимости переменной.

Нету там ничего сложного... Правильно тебе сказали всё. И код твой срабатывает, я тоже не ошибся. Просто у тебя есть 2 разных переменных с одним именем. Ты когда пишешь "var found=...", то каждый раз создается новая переменная в текущем namespace. Вот и получается, что (если смотреть в начальном коде), у тебя переменной found присваивается величина 60, затем внутри функции ДРУГОЙ переменной с таким же именем присваивается 10. При выходе из функции внутренняя переменная забывается, а у первой так и остается величина 60. Ты ж её не трогал!


Так что - всё работает. Другое дело, что не так, как ты хочешь. А достаточно было в начальном коде убрать слово "var" в строке "var found=10" и оно должно было бы заработать.

воу воу палехче, с областями видимости
более разумно расписано тут

http://habrahabr.ru/post/78991/

Смотря код даже изменив значение в той переменной ты не добьешься нужного результата
Скорее всего у js плагина должно быть api способное изменять это значение
iDisplayLength

через какие-то методы, думаю стоит обратиться к документации

если смотреть глубже, вариант у тебя 2
либо перерисовать таблицу
либо курить доку или дописывать плагин что ты хочешь использовать
sergeiss
Цитата (bestxp @ 11.01.2014 - 13:59)
воу воу палехче, с областями видимости
более разумно расписано тут

Скажи, в чем противоречие сказанного мной и по "твоей" ссылке? :)


Цитата (AllesKlar @ 11.01.2014 - 13:57)
А разве это не так:
var found = 60 - локальная для функции $(document).ready(function()){}
Следовательно, глобальная для всех внутри определенных функци. А, т.к. $(document).ready является "оболочкой" для всех остальных функция, то и var found = 60 является глобальной для всех.

Да, это абсолютно верно ты написал. С одним исключением: там внутри есть такое объявление обработчика нажатия
$('#t10').click(function(){	var found = 10; });

Я говорил ранее и повторю еще раз, что внутри этой функции будет создана еще одна переменная с именем found! Если именно здесь убрать слово "var", то тогда да, обратимся к той, "глобальной" переменной found.

Вот сравни, как отработают 2 кода; первый аналогичен тому, что у ТС, а во втором убрано слово var внутри функции.
<input type="button" value="test" onclick="clk(); alert( found )" >
<script>
var
found=60;
function clk()
{
alert( found );
var found=10;
alert( found );
}
</script>


<input type="button" value="test" onclick="clk(); alert( found )" >
<script>
var
found=60;
function clk()
{
alert( found );
found=10;
alert( found );
}
</script>


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.