Javascript 基于页面的语言下拉列表

Javascript 基于页面的语言下拉列表,javascript,php,jquery,Javascript,Php,Jquery,我有一个带有语言选项的简单选择框。每个选项将根据所选语言加载不同的页面。导航可以工作,但我需要基于页面ID的默认选定项,该ID是使用PHP设置的 我已经在页面上加载了jQuery1.12,以便在需要时可以使用该库 <?php $body_id = "en"; ?> <form id="language" method="post"> <select class="language" onchange="window.location.href=th

我有一个带有语言选项的简单选择框。每个选项将根据所选语言加载不同的页面。导航可以工作,但我需要基于页面ID的默认选定项,该ID是使用PHP设置的

我已经在页面上加载了jQuery1.12,以便在需要时可以使用该库

<?php
    $body_id = "en";
?>

<form id="language" method="post">
    <select class="language" onchange="window.location.href=this.value">
        <option selected="selected">LANGUAGE</option>
        <option value="index-da.php">DANSK</option>
        <option value="index-de.php">DEUTSCH</option>
        <option value="index.php">ENGLISH</option>
        <option value="index-es.php">ESPA&#209;OL</option>
        <option value="index-fr.php">FRAN&#199;AIS</option>
        <option value="index-it.php">ITALIANO</option>
        <option value="index-pl.php">POLSKI</option>
    </select>
</form>
使用过滤器获取目标选项元素,并根据选项的值应用条件

var$body_id=en; var filtered=$'.language'.find'option'.filterfunction{ 返回此.value.split'.[0]。split'-'[1]=$body\u id; }; 如果已过滤,则为0.1长度{ 过滤。道具“已选择”,为真; }否则{ $'.language'.find'option[value=index.php]'.prop'selected',true; } 语言 丹斯克 德国 英语 ESPA&209;OL FRAN&199;人工智能 意大利语 波尔斯基 使用过滤器获取目标选项元素,并根据选项的值应用条件

var$body_id=en; var filtered=$'.language'.find'option'.filterfunction{ 返回此.value.split'.[0]。split'-'[1]=$body\u id; }; 如果已过滤,则为0.1长度{ 过滤。道具“已选择”,为真; }否则{ $'.language'.find'option[value=index.php]'.prop'selected',true; } 语言 丹斯克 德国 英语 ESPA&209;OL FRAN&199;人工智能 意大利语 波尔斯基
你不必到处重复你自己,你只需要制作一个语言数组,并在迭代中回显你的模板,然后检查$\u服务器['SCRIPT\u NAME'],看看它是否相等,如果相等,就将它设置为选中

<?php
$languages = array(
  'da' => 'DANSK',
  'de' => 'DEUTSCH',
  'en' => 'ENGLISH',
  'es' => 'ESPA&#209;OL',
  'fr' => 'FRAN&#199;AIS',
  'it' => 'ITALIANO',
  'pl' => 'POLSKI'
);
?>

<form id="language" method="post">
    <select class="language" onchange="window.location.href=this.value">
      <option selected="selected" disabled>LANGUAGE</option>

<?php
foreach ($languages as $code => $language){

  $page = "index-$code.php";

  if (basename($_SERVER['SCRIPT_NAME']) === $page)
    $selected = 'selected="selected"';
  else
    $selected = '';

  echo "<option value='$page' $selected>$language</option>".PHP_EOL;

}
?>

    </select>
</form>

你不必到处重复你自己,你只需要制作一个语言数组,并在迭代中回显你的模板,然后检查$\u服务器['SCRIPT\u NAME'],看看它是否相等,如果相等,就将它设置为选中

<?php
$languages = array(
  'da' => 'DANSK',
  'de' => 'DEUTSCH',
  'en' => 'ENGLISH',
  'es' => 'ESPA&#209;OL',
  'fr' => 'FRAN&#199;AIS',
  'it' => 'ITALIANO',
  'pl' => 'POLSKI'
);
?>

<form id="language" method="post">
    <select class="language" onchange="window.location.href=this.value">
      <option selected="selected" disabled>LANGUAGE</option>

<?php
foreach ($languages as $code => $language){

  $page = "index-$code.php";

  if (basename($_SERVER['SCRIPT_NAME']) === $page)
    $selected = 'selected="selected"';
  else
    $selected = '';

  echo "<option value='$page' $selected>$language</option>".PHP_EOL;

}
?>

    </select>
</form>

这样做会更灵活:

<?php
$body_id = !empty($_POST['lang']) ? $_POST['lang'] : '';

$options = array
(
    'da' => 'Dansk',
    'de' => 'Deutsch',
    'en' => 'English',
    'es' => 'Español',
    'fr' => 'Français',
    'it' => 'Italiano',
    'pl' => 'Polski'
);
?>
<form action="<?=getenv('PHP_SELF')?>" method="post">
    <select name="lang" onchange="this.form.submit()">
        <option>Language</option>
<?php foreach ($options as $key => $val):?>
        <option value="<?=$key?>"<?=($key == $body_id ? 'selected' : '')?>><?=htmlentities($val)?></option>
<?php endforeach?>
    </select>
</form>

这样做会更灵活:

<?php
$body_id = !empty($_POST['lang']) ? $_POST['lang'] : '';

$options = array
(
    'da' => 'Dansk',
    'de' => 'Deutsch',
    'en' => 'English',
    'es' => 'Español',
    'fr' => 'Français',
    'it' => 'Italiano',
    'pl' => 'Polski'
);
?>
<form action="<?=getenv('PHP_SELF')?>" method="post">
    <select name="lang" onchange="this.form.submit()">
        <option>Language</option>
<?php foreach ($options as $key => $val):?>
        <option value="<?=$key?>"<?=($key == $body_id ? 'selected' : '')?>><?=htmlentities($val)?></option>
<?php endforeach?>
    </select>
</form>

$body_id与options中的任何内容都不匹配是的,我没有写过,因为我不知道需要写什么。我假设jQuery中有东西调用$body\u id并将所选属性添加到选项中。$body\u id与options中的任何内容都不匹配是的,我没有写过,因为我不知道需要写什么。我假设jQuery中有东西调用$body_id并将所选属性添加到选项中。谢谢!不幸的是,这总是将英语设置为所选语言。如果用户访问意大利语页面,则需要选择意大利语选项。每个页面都有一个$body\u id集。英语是英语。德为德语。这是意大利语。等等,啊,我明白了!第一个var需要出现在每一页上!“非常好用,谢谢你,先生。”克里斯卡瑟,我很高兴它帮了大忙,伙计!愉快的编码奖金回合,我能有一行调用PHP变量而不是在每个页面上再次声明它吗?@ChrisCather,var$body_id=将解决这个问题!谢谢人造丝!不幸的是,这总是将英语设置为所选语言。如果用户访问意大利语页面,则需要选择意大利语选项。每个页面都有一个$body\u id集。英语是英语。德为德语。这是意大利语。等等,啊,我明白了!第一个var需要出现在每一页上!“非常好用,谢谢你,先生。”克里斯卡瑟,我很高兴它帮了大忙,伙计!愉快的编码奖金回合,我能有一行调用PHP变量而不是在每个页面上再次声明它吗?@ChrisCather,var$body_id=将解决这个问题!